是不是这题问有几个this表达的意思跟调用几次函数无关?

是不是这题问有几个this表达的意思跟调用几次函数无关?

https://img1.sycdn.imooc.com//climg/6139525809b4e4b218190610.jpg

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function foo(){
return ()=>{
return ()=>{
return ()=>{
console.log('id:',this.id);
};
};
};
}

var f=foo.call({id:1});
// console.log(f);
var t1=f.call({id:2})()();
// console.log(t1);
var t2=f().call({id:3})();
var t3=f().call({id:4});
</script>
</body>
</html>

https://img1.sycdn.imooc.com//climg/6139526e0926db0102970156.jpg

上面定义的4层嵌套函数中,3个箭头函数没有this,只有调用最外层的非箭头函数有this,那么结果输出了两行,答案还是只有一个this,是不是这题问有几个this表达的意思跟调用几次函数无关?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,可以理解为this跟调用几次函数无关。

因为箭头函数中没有自己的this,里面嵌套的几个箭头函数内部的this都是指向foo函数的中this,所以不管使用call方法怎么改变函数中this指向, 最终都只有一个this,那就是foo函数中的this。

祝学习愉快~

  • 老师所以箭头函数也不能用call和apply对吧

    2022-05-15 22:31:47
  • 同学你好,是的,箭头函数不适用call和apply,祝学习愉快~

    2022-05-16 10:25:39
电磁护盾 提问者 2021-09-09 08:23:12

https://img1.sycdn.imooc.com//climg/613953a4096e58a106520824.jpg

https://img1.sycdn.imooc.com//climg/613953b2090aaf2902880201.jpg

那么如果把下面调用语句写上两遍,答案是不是还是只有一个this?


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师