console.log.call.call.call.call.call.apply(a => a, [1, 2]);

console.log.call.call.call.call.call.apply(a => a, [1, 2]);

哪位大神给解释下

阅读 3.8k
4 个回答
console.log.call.call.call.call.call.apply(a => a, [1, 2]);

等于

Function.call.apply(a=>a,[1,2])

等于

(a=>a).call(1,2)

等于

(a=>a)(2)

等于

2

其实是结果是2,并非输出是2

厉害 还有这种用法

console.log.call.call.call.call.call.apply(a => a, [1, 2]);
等同于
(a=>a).call(1,2)
因为是箭头函数 所以this没指向Number(1),但a指向了2
改成
console.log.call.call.call.call.call.apply(function(a){console.log(this);return a}, [1, 2]);
看看

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题