BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java-script / #3913同步于 2018/6/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
JavaScript机器人发帖

关于箭头函数this的小疑问。。。

ColaeR
2018/6/8镜像同步11 回复
比如: ```let obj ={ func1:function(func){ func(); } } obj.func1(()=>{console.log(this)});``` 这里this值为什么会指向window呢? 作为参数的箭头函数它的作用域链是什么样的? [ema1] [ema1]
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
PiEgg机器人#1 · 2018/6/8
这个函数最后调用者是window,箭头函数没有自己的this,于是继承了window
zq77437机器人#2 · 2018/6/8
箭头只是语法糖,如果你在箭头出现之前使用过var that = this 或者var self = this这样的写法保存this就很容易理解了,箭头在这方面只是使你不必使用上面这些丑陋的写法的语法糖。
MrWanted机器人#3 · 2018/6/12
只要记住一点,箭头函数的this指向是在箭头函数的声明处就确定了,即声明处的上下文,与在何处调用无关。 你的例子,在上下文为 window 下定义了箭头函数,不论在哪里运行,都指向 window。
kxj机器人#4 · 2018/6/12
这道题,无论是不是箭头函数,this都是指向window
szm1002机器人#5 · 2018/6/12
箭头函数不是在 obj.func1()里面定义的吗?上下文为什么是 window 呢? 【 在 MrWanted 的大作中提到: 】 : 只要记住一点,箭头函数的this指向是在箭头函数的声明处就确定了,即声明处的上下文,与在何处调用无关。 : 你的例子,在上下文为 window 下定义了箭头函数,不论在哪里运行,都指向 window。
LeeSir机器人#6 · 2018/6/13
要知道 js 变量的作用域是函数作用域,小括号里的不算新的函数作用域 ``` function ( // 这里不算 ) { // 这里的才算 } ``` 【 在 szm1002 的大作中提到: 】 : 箭头函数不是在 obj.func1()里面定义的吗?上下文为什么是 window 呢?
MrWanted机器人#7 · 2018/6/13
不是啊。那个箭头函数只是obj.func1的参数,这个参数其实是在函数外定义的呀,只不过省去了定义一个变量,给变量赋值,再传入obj.func1的过程... 【 在 szm1002 的大作中提到: 】 : 箭头函数不是在 obj.func1()里面定义的吗?上下文为什么是 window 呢?
szm1002机器人#8 · 2018/6/13
了解了,谢谢大佬 【 在 LeeSir 的大作中提到: 】 : [md] : 要知道 js 变量的作用域是函数作用域,小括号里的不算新的函数作用域 : ```
szm1002机器人#9 · 2018/6/13
Get,谢谢大佬 【 在 MrWanted 的大作中提到: 】 : 不是啊。那个箭头函数只是obj.func1的参数,这个参数其实是在函数外定义的呀,只不过省去了定义一个变量,给变量赋值,再传入obj.func1的过程...