6.ES6新增,let,const,解构,箭头函数

1.ES6是泛指ES2015之后的版本

6.ES6新增,let,const,解构,箭头函数_第1张图片

6.ES6新增,let,const,解构,箭头函数_第2张图片

2.let声明变量,具有块级{}作用域

比如if,for里。可以防止循环变量成为全局变量。

let没有变量提升

只能先声明,再使用。变量提升指的是把变量提升到作用域最开始。函数声明这个效果。

暂时性死区

全局变量有个tmp,块级作用域又声明了一个同名的tmp,而且在声明之前使用了,就会死区。

6.ES6新增,let,const,解构,箭头函数_第3张图片

6.ES6新增,let,const,解构,箭头函数_第4张图片

	

3.let经典面试题。

因为循环时候,函数并没有调用,所以arr[0],arr[1]保存的函数都是输出全局变量i。

当循环结束后,i就变成了2.

所以最后的输出都为2.

6.ES6新增,let,const,解构,箭头函数_第5张图片

下面将var换成let,因为let是每一轮循环都产生一个块级作用域,每个作用域的i是不同的(平行宇宙)。

所以最后输出0,1。

6.ES6新增,let,const,解构,箭头函数_第6张图片

4.常量const

6.ES6新增,let,const,解构,箭头函数_第7张图片

对于复杂类型,数组,对象(盒子)不可以改,但里面装的东西可以改。

6.ES6新增,let,const,解构,箭头函数_第8张图片

5.var,let,const对比

6.ES6新增,let,const,解构,箭头函数_第9张图片

6.数组解构赋值,就一次性把数组的值赋给一组变量。

是一一对应的。如果数组值不够的话,没得到值的变量就是undefined。

6.ES6新增,let,const,解构,箭头函数_第10张图片

7.对象解构。

左边大括号用于匹配属性名,然后把值赋给它。

第二种,冒号左边匹配属性名,右边是起的变量名(小名)。

6.ES6新增,let,const,解构,箭头函数_第11张图片

8.箭头函数

定义一般用个const 函数名保存函数。()里是参数,{}里是函数体。

6.ES6新增,let,const,解构,箭头函数_第12张图片

6.ES6新增,let,const,解构,箭头函数_第13张图片

9,箭头函数的this指向。

箭头函数的this不是指向调用者的哦。

fn.call把函数指向obj。

箭头函数又是在函数内定义,所以和函数指向一样,也是obj。

10.箭头函数面试题

这里箭头函数定义在对象内,但obj对象的{}不能产生一个作用域。作用域一般有函数作用域,if,for作用域什么的。

所以箭头函数其实定义在window内,this指向window。

最后输出的是100。

 

你可能感兴趣的:(ES6)