一、let命令
1.具体操作
用来声明变量。它的用法类似于var
,但是所声明的变量,只在let
命令所在的代码块内有效。
上面代码在代码块之中,分别用let
和var
声明了两个变量。然后在代码块之外调用这两个变量,结果let
声明的变量报错
var
声明的变量返回了正确的值。这表明,let
声明的变量只在它所在的代码块有效。
for
循环的计数器,就很合适使用let
命令。
计数器i
只在for
循环体内有效,在循环体外引用就会报错。
结果如下:
下面的代码如果使用var
,最后输出的是10
。
结果如下:
如果使用let,申明的变量在块级作用域内有效,结果为6,原因是量i
是let
声明的,当前的i
只在本轮循环有效,所以每一次循环的i
其实都是一个新的变量,
所以最后输出的是6
2.不存在变量提升
var
命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined
。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。
为了纠正这种现象,let
命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。
二、变量的解构
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。
假如用let申明a,b,c,d四个变量,其中d为列表。本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值
示例一 let [a,b,c,[d]] = [89,90,99,100]; console.log(a); console.log(c); console.log(d);
执行结果会报错,如下:
报错原因:没有解构成功,如果等号的右边不是数组(或者严格地说,不是可遍历的结构),那么将会报错。
三、函数的扩展
四、数组的扩展
1)判断数组当中是否存在某个数值
console.log(arr.indexOf(1000)) console.log(arr.includes(201))
2)对数组的遍历
arr.forEach(function (value,index) { console.log(value); }) var arr2 = arr.map(function (value,index) { return value+1 })
3)对数组的过滤
var arr4 = arr.filter(function (value,index) { return value > 50 }) console.log(arr4);
五、对象的扩展
(1)对象当中的属性可以简写
(2)对象当中的方法可以简写