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改变了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值