es6的变量定义let和const和箭头函数,this和变量的查找方式的差别,极易混淆

其中let是块级作用域,出了代码块就没有办法使用
const是定义固定值,后面代码不可修改
箭头函数是将箭头左边的变量(不管是输出的还是定义的)引入用于右侧的函数或者计算里面,这样实现匿名函数
箭头函数没有自己的this、arguments、super、new.target,它们分别指向外层函数的相应变量。这用来解决函数调用时对数据的this造成的不好引用的问题,涉及到that的用法
this在函数中是window,可以调用窗口下的变量this.a,即全局变量a
this在对象的方法中是这个对象中的变量,this.a为对象中的a局部变量
this在函数的嵌套函数里面分两种情况 严格和非严格模式,非严格模式指的是window this.a是全局变量a 严格模式下是未定义。通常我们使用非严格模式。也就是说他不在内嵌函数的外围函数找,直接蹦出去了,如果要使用,则需要使用变量的查找方式,即一层一层的找,也就是要使用that或者其他值来进行使用
这里的this和作用域变量的查找方式不一样,找变量是一层一层往上,而this就是一个对象的下面找,找不到就是undifined,是死规定
that是在嵌套函数中用var that =this 来让嵌套函数使用外层函数的变量

当函数被作为某个对象的方法调用时,this等于那个对象;
如果函数挂载在一个对象上,作为对象的一个属性,就称它为对象的方法;通过这个对象来调用函数时,该对象就是此次调用的上下文,也就是该函数的this值。
这两句对应了下面两张图

在es6中内嵌函数的this被指定为外层函数的this指向,这里是函数定义时的指向,如果使用中外部函数的this改变了,内嵌函数的this不会发生该改变,不同于上面的h5
注意下面三句的理解
箭头函数的this指向外层函数作用域中的this。
箭头函数的this是定义函数时所在上下文中的this。
箭头函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

es6的变量定义let和const和箭头函数,this和变量的查找方式的差别,极易混淆_第1张图片
es6的变量定义let和const和箭头函数,this和变量的查找方式的差别,极易混淆_第2张图片

你可能感兴趣的:(es6的变量定义let和const和箭头函数,this和变量的查找方式的差别,极易混淆)