1.let
(1)let声的明变量只在所处的块级有效
*在大括弧里声明的let 只有在那个大括弧里有效
*好处是: 防止外层变量覆盖里层变量
*强行输出会报该变量未定义的错
*var 声明的不具备块级作用域的这个特点
*防止循环变量变成全局变量
* 不存在变量提升
*具有暂时性死区 在声明范围内进行永久性绑定
*具有限定性,限定范围是代码执行次数,代码执行第一次里的和代码执行第二次的
里的let 是两个不同的 let
*在全局里声明的let,作用域不属于window,属于JavaSript;
2. const
(1).声明常量 ,常量就是值( 内存地址 ) 不能变化的量
*具有块级作用域
*声明时必须赋值,否则会报错
* 常量赋值后,值不能修改;
* 使用const 定义的数组或者是对象,里面的值是可以改变的,这样修
改,并不是重新赋值;
* 如果存贮的值不需要改变,尽量使用const,效率比var 要高,因为不需要实时
监控这个变量的变化;
3.数组解构
对象解构与之类似(里面的解构值与属性名要匹配)
*** 例如:
还可以把对象里的值赋给一个变量,切记要先匹配
*在等号的左边打上一个中括弧,代表的是一种结构,是一种方法
let arr = [1,2,3];
let [a,b,c] = arr;
console.log(a);
console.log(b);
console.log(c);
4. 箭头函数
定义: 一个小括号 一个箭头 一个函数体( 花括弧)
调用方式: 赋给一个变量,再调用那个变量
**小括弧里面放形参
** 如果函数体中只有一句代码,且代码的执行结果就是返回值
可省略花括弧
如:
let sum = (num1,num2) => num1 + num2;
这样就可省略花括弧;
** 如果形参只有一个,可省略小括号
注意: 箭头函数没有自己的this 如果在箭头函数中使用this
那么 指向的是函数定义位置的 this
5.剩余参数
语法:function(a, b, ...theArgs) {
// ...
}
定义: 剩余参数允许我们将一个不定数量的参数表示为一个数组
与之前学的那个arguments 差不多,都是不定义数量
区别: (1)剩余参数是一个真正的数组
(2)只包含了那些没有对应形参的实参
用法:(1).可单独作为传入参数的一个功能使用
(2).还可以和解构一起使用,更方便的获取里面元素
** arguments
定义:所有函数中都可用的局部变量,但是箭头函数中不可用
(1)是一个伪数组(只有length属性和索引元素)
(2)可以被转化为一个真正的数组
注意:现在在严格模式下,arguments对象已与过往不同,
arguments[@@iterator] 不再与函数的实际形参之间共享,
同时caller属性也被移除.
6.扩展运算符
…(扩展运算符)
定义: 可将运算符可将数组或者是对象转化为
用逗号分割的参数序列
加粗样式
** 应用场景:
(1).合并数组
方法一直接写在一起在重新传入一个变量
用push 的方法添加,通过扩展运算符去掉数组号,
再添加
(2).把伪数组转化为真正的数组
运用扩展运算符去除分隔,再添加中括弧
7.转化数组
** Array.from()
直接转换为数组,再赋值1给一个变量,在输出
** 还可以接受第二个参数 ,对每个元素进行处理
将处理后的值放入返回的数组
8.在数组中查找所需要的元素,
对于空数组是不会执行的
没有改变数组的原始值
** 数组下的 find()方法
有三个参数,第一个当前元素,第二个 当前元素的索引值
第三个 当前元素所属的数组对象
** 没有符合条件则返回空值
注意: 和foreach 的方法差不多,不过这个方法是数组里的
方法