箭头函数没有绑定this

==箭头函数没有绑定this==

  • 不要把【箭头函数】和【箭头函数的定义函数】弄混淆
  • ecma262规范中明确规定,箭头函数根本没有自身的this绑定
  • 在函数执行前绑定this的时候,传入的thisArgument会被直接忽略

==也就是说箭头函数本身没法修改this,所以对this访问永远是它继承外部上下的this按照babel的实现来说,在箭头函数内部没有this引用的时候,默认编译成这样==

var f = function(v) {
  return v;
};

但是如果箭头函数内部使用了this,就成了

function test() {
  var _this = this;

  var f = function f(v) {
    return _this.a;
  };
}

这个实现是符合标准的,==全程没有绑定这回事==。所以结论就是:

“箭头函数”的this,总是指向定义时所在的对象,而不是运行时所在的对象。

这句话完全正确,而且语言是通过忽略对箭头函数的所有绑定操作来实现的,而不是简单的返回一个绑定this的闭包。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 特别说明,为便于查阅,文章转自https://github.com/getify/You-Dont-Know-JS...
    杀破狼real阅读 729评论 0 1
  • 关于 this this 关键字是 JavaScript 中最复杂的机制之一。它是一个很特别的关键字,被自动定义在...
    游学者灬墨槿阅读 584评论 1 2
  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    呼呼哥阅读 3,495评论 0 1
  • 整理自: https://zhuanlan.zhihu.com/p/23804247 https://zhuanl...
    ssydz阅读 279评论 0 0
  • #睡前# 很喜欢给朋友们寄明信片 花几个小时写上一段又一段 只对他们一个人说的话儿 每次将信投入信筒的时候 都有种...
    CLCOM阅读 205评论 0 0