js学习笔记

目录

  • delete
  • __dirname和__filename
  • Import、Require、interopRequireDefault
    • require
    • import
    • interopRequireDefault
    • 引用出现的一些问题
      • 循环引用
      • 引用文件的变量作用域
      • 引入导致的路径错误问题
  • defer和async
  • 严格模式
  • undefined和null
  • parseInt等转数子的方法,如果参数是数字加字符,会自动过滤字符
  • 原始字符串
  • 标签语句

delete

我在看nodejs的808协议解析的代码的时候看到了delete这个操作用来对超时做处理。
因为js自带垃圾回收机制,所以delete不常用
但是比如前端通过接口向后端发一个对象,比如这个对象是form表单里的数据,如果不要把每个参数都传给后端,可以用delete删除掉某几个字段;

var obj = {name: "John", age: 25};
delete obj.age;
console.log(obj); // 输出: {name: "John"}

__dirname和__filename

__dirname:用来动态获取当前文件模块所属目录的绝对路径
__filename:用来动态获取当前文件的绝对路径

Import、Require、interopRequireDefault

require

require是CommonJS的规范
require是一开始就执行读取模块;
(Nodejs使用的是require)

静态编译:
引用了之后会放入缓存,所以可以使用require(‘…’).xxx直接使用里面的属性,无需再次读取

import

import是ES6的规范,
import是先不执行,遇到使用到的时候再真正的读取模块;

interopRequireDefault

interopRequireDefault的作用就是判断require的模块是否是已经被babel编译过的模块,如果是,则当前require的引用一定存在一个default属性;否则为他加一个default属性,这样便不会调用模块的default为undefined的情况了。

参考:https://www.dvy.com.cn/2020/12/06/6976.html

引用出现的一些问题

循环引用

多个文件引用的时候一定要避免循环引用,无论是几个文件循环都会导致报错,在一开始写代码的时候就要注意将工具函数分出来!

引用文件的变量作用域

举个例子,如下

// utils.js
let a = 1;
const fun = () => {a = 2;
};
const getA = () => {console.log(a);
};
let obj = {x: 0,
};
const changeObj = () => {obj.x = 1;console.log(obj);
};
module.exports = { a, fun, getA, obj, changeObj };// main.js
const utils = require("./utils/utils");
utils.fun();
console.log(utils.a); // 1
utils.getA(); // 2
utils.a = 3;
utils.getA(); // 2
// console.log(utils.obj); // { x: 0 }
utils.changeObj(); // { x: 1 }
console.log(utils.obj); // { x: 1 }
utils.obj.x = 2;
console.log(utils.obj); // { x: 2 }

可以看出以下两点,

1.js的执行逻辑是一个文件一旦被加载就不会被销毁,直到进程结束才会被销毁
2.引用可以当成浅拷贝,被赋值的时候如果是对象之类的引用数据类型,那么只会获得一个指针地址,而不是整个数据。

引入导致的路径错误问题

// main.js
let readF = require("./utils/readFile");
readF();
// readFile.js
const fs = require("fs");
const readF = () => {let content = fs.readFileSync("./file.txt");console.log(content);
};
module.exports = readF;

如上情况会报错Error: ENOENT: no such file or directory, open './file.txt'
因为引用这个模块的时候这个路径只是个字符串,会直接引用到main.js中,也就是在main.js中使用相对路径。所以需要用__dirname变成绝对路径。

// readFile.js
const fs = require("fs");
const readF = () => {let content = fs.readFileSync(__dirname+"/file.txt");console.log(content);
};
module.exports = readF;

defer和async

之前面试准备的时候知道这两个东西,就是你用script标签的时候可以使用这两个不对html页面渲染阻塞
执行顺序:

普通script:遇到先网络加载,再执行脚本,再继续渲染
defer:遇到并行下载,等渲染完了再执行
async:遇到并行下载,下载完了直接执行

严格模式

“use strict”
防止不规范导致安全问题

undefined和null

!undefined和!null结果都是true

parseInt等转数子的方法,如果参数是数字加字符,会自动过滤字符

原始字符串

String.raw`\u00A9`  // 将版权符号变回字符串

标签语句

之前好像见过但是没怎么在意,看红宝书的时候刚好看到了,记录一下,这个在多层循环的时候可以任意跳出某个循环,可以用continue和break加上label名称,如下示例

let i,j,count = 0;
label1: for (i = 0; i < 10; i++) {label2: for (j = 0; j < 10; j++) {if (i > 5) {break label1;}if (j > 5) {break label2;}count++;}
}
console.log(i, j, count); // 6 0 36

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/137032.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot整合Oauth2

Spring Boot 可以很容易地实现 OAuth2 认证&#xff0c;下面是一个简单的整合 OAuth2 的步骤&#xff1a; 添加 Maven 依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-oauth2-client<…

JAVA 读取写入文件

读取 写入 文件import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;public class text6 {public static void main(String[] args) {System.out.println(fiel_read("file\\a.txt"));String str&qu…

力扣每日一道系列 --- LeetCode 88. 合并两个有序数组

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构探索 ✅LeetCode每日一道 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 思路1&#xff1a;暴力求解思路2&#xff1a;原地合并 LeetCode 88. 合并两个有序数组…

Java Agent - 应用程序代理-笔记

Java Agent - 应用程序代理-笔记 概述说明 Java Agent 又叫做 Java 探针&#xff0c;该功能是 Java 虚拟机提供的一整套后门&#xff0c;通过这套后门可以对虚拟机方方面面进行监控与分析&#xff0c;甚至干预虚拟机的运行。 是在 JDK1.5 引入的一种可以动态修改 Java 字节码…

android.support.v7.app.AlertDialog

ndroid.support.v7.app.AlertDialog 参考 android.support.v4.app.ActivityCompat&#xff1b;-CSDN博客

gitlab安装和使用

gitlab安装和使用 1.下载必要的依赖 sudo yum install curl openssh-server openssh-clients postfix cronie #需要执行sudo service postfix start #配置邮箱的sudo chkconfig postfix on #配置邮箱的#这句是用来做防火墙的&#xff0c;避免用户通过ssh方式和http来访问。su…

修改Android Studio默认的gradle目录

今天看了一下&#xff0c;gradle在C盘占用了40多G。我C盘是做GHOST的&#xff0c;放在这里不方便。所以就要修改。 新建目录名&#xff08;似乎无必要&#xff09; ANDROID_SDK_HOMEG:\SOFTWARES\android-sdk GRADLE_USER_HOMEG:\SOFTWARES\.gradle 修改目录 File->Setti…

C# 异步日志记录类,方便下次使用,不用重复造轮子

先定义接口类&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 异常 {internal interface ILog{Task WriteErrorLog(string message);Task WriteInfoLog(string message);Task W…

Git 安全警告修复手册:解决 `fatal: detected dubious ownership in repository at ` 问题 ️

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

2.HTML中常用浏览器

2.常用浏览器 2.1 什么是浏览器 浏览器是网页显示&#xff0c;运行的平台。常用的浏览器有IE&#xff0c;火狐&#xff0c;谷歌&#xff0c;Safari和Opera等 平时成为五大浏览器 2.2 浏览器内核 浏览器内核&#xff08;渲染引擎&#xff09;&#xff1a;负责读取网页内容&…

Java算法(五):手写数组逆置API方法,实现数组逆置。 while实现 for循环实现

Java算法&#xff08;五&#xff09; while 循环实现 需求&#xff1a; 已知一个数组&#xff0c;arr {11, 22, 33, 44, 55};使用程序实现把数组中的元素交换位置。 交换后的数组为 arr {55, 44, 33, 22, 11}; 并在控制台输出交换后的数组元素。 代码示例 package com.…

如何上传自己的npm包

文章目录 一、创建项目1.1 第一步注册1.2 第二步初始化1.3 第三步登录1.4 更改镜像1.5 上传1.6 更新上传后的npm包 二、编写代码2.1 新建一个文件夹2.2 初始化2.3 package.json配置2.4 安装依赖模块2.5 创建index.js文件2.6 测试2.7 上传 npm是什么&#xff1f; npm是JavaScrip…

提取当前文件夹下多文件夹中的数据

提取当前文件夹下多文件夹中的数据 1.实现步骤 现在D:\临时\图库 这个文件夹下有多个文件夹,现在需要将多个文件夹中的文件全部移动到D:\临时\图库下; $sourcePath "D:\临时\图库" $targetPath "D:\临时\图库"Get-ChildItem -Path $sourcePath -File …

【Proteus仿真】【Arduino单片机】数码管显示

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用TM1637、共阳数码管等。 主要功能&#xff1a; 系统运行后&#xff0c;数码管显示数字、字符。 二、软件设计 /* 作者&#xff1a;嗨小易&am…

安卓常见设计模式------装饰器模式(Kotlin版)

1. W1 是什么&#xff0c;什么是装饰器模式&#xff1f; 思想&#xff1a;动态地给对象添加额外的功能&#xff0c;通过将对象包装在一个装饰器类中&#xff0c;使装饰器类在不改变原始对象结构的情况下&#xff0c;扩展其功能。 2. W2 为什么&#xff0c;为什么需要使用装饰…

Spring Cloud Config、Apollo、Nacos和Archaius对比

一、适应场景 Spring Cloud Config、Apollo、Nacos、Archaius这四个配置中心在功能和使用场景上有所差异。 1.Spring Cloud Config Spring Cloud Config是Spring Cloud官方提供的分布式系统的外部配置中心。它提供了服务器和客户端支持&#xff0c;可以集中管理不同环境、不同集…

平面和射线交点

设平面 A x B y C z D 0 ( A 2 B 2 C 2 ≠ 0 ) AxByCz D0\left(A^2B^2C^2\neq 0\right) AxByCzD0(A2B2C20), 点 P ( P x , P y , P z ) P(P_x, P_y, P_z) P(Px​,Py​,Pz​) (1)求点 P P P到平面距离 (2)过点 P P P作直线&#xff0c;方向为 ( D x , D y , D z ) \lef…

AI时代如何提升自己晋升力

要在AI时代提升职场晋升力&#xff0c;采取以下详细策略&#xff1a; 终身学习的实践&#xff1a; 专业课程&#xff1a; 定期参加在线课程或研讨会&#xff0c;如Coursera、edX等&#xff0c;学习最新的AI技术和行业动态。行业资讯&#xff1a; 订阅相关的行业杂志、博客&…

基于SSM的学院就业信息网设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

奇异矩阵、非奇异矩阵

对于一个方阵A&#xff1a; 如果A的行列式等于0&#xff0c;称矩阵A为奇异矩阵如果A的行列式不等于0&#xff0c;称A 非奇异矩阵 也就是说&#xff0c;对于方阵A&#xff0c;如果它是满秩的&#xff0c;即它的秩等于矩阵的阶数&#xff0c;就是非奇异矩阵&#xff1b;如果秩小…