9.29.2024
1.浅拷贝和深拷贝
Es6的语法糖:用assign将obj对象浅拷贝给o对象。
把数组写在前面是因为数组也是对象
2.正则表达式
创建和检测正则表达式
正则表达式的使用直接跳过,等要用时现查现用
3.ES6
4.let关键字
块级作用域是指在一个{}l里
变量提升(Variable Hoisting)指的是无论在代码的哪个位置声明变量(使用var关键字),这些变量的声明都会被提升到函数或全局作用域的顶部。这意味着在代码执行之前,JavaScript引擎会先扫描整个作用域中的所有var声明,并初始化为undefined。
只有变量的声明被提升,而不是变量的赋值。赋值操作发生在代码执行的阶段。
Let关键字把变量num和if语句后面的{}块级作用域绑定起来,外面的同名变量不会影响{
}内的变量
全局作用域 Global
脚本作用域 Script
局部作用域 Local
块级作用域 Block
5.const关键字
如果常量的数据类型是基本数据类型,则值不能变,如果是引用数据类型(数组,对象等),就是内存地址(引用)不能变
如果使用的数据不需要变化,应该用const声明,这样效率更高,因为js引擎不需要实时监控数据的变化
6、解构赋值
数组解构赋值:
对象解构赋值:
改别名,name只是用于属性匹配,myName才是真正的变量名
7.箭头函数:可简化函数代码
()=>{}
对象是不能产生作用域的
- 当使用 let age = 18; 时,this.age 访问的是全局作用域中的 age,由于 let 声明的变量不会挂载到全局对象上,所以结果是 undefined。
- 当使用 var age = 19; 时,this.age 同样访问的是全局作用域中的 age,但 var 声明的变量会挂载到全局对象上,所以结果是 19。
这就是为什么,使用 let 声明的变量在 obj.say() 中打印结果是 undefined,而使用 var 声明的变量打印结果是 19。
8、剩余参数
…args表示的是剩余参数
与解构语法配合使用