获赞
4
粉丝
0
关注
4
看过 TA
1
中南大学
2021
前端工程师
IP属地:未知
暂未填写个人简介
私信
关注
2020-09-23 02:01
已编辑
字节跳动_前端工程师
var a = 1; var foo = {     a: 2,     bar: function () {         return this.a;     } }; console.log(foo.bar()); console.log((foo.bar)()); console.log((foo.bar=foo.bar)()); 这道题答案是我测试了一遍是2,2,1。为啥?有人能解释清楚吗。
永则:var a = 1; var foo = { a: 2, bar: function () { return this.a; } }; console.log(foo.bar()); //这个很容易理解 bar函数的this绑定在foo对象上 console.log((foo.bar)()); //这个加不加括号都等同于上面 console.log((foo.bar=foo.bar)()); //这个可能比较难理解 因为里面是一个赋值运算 表达式返回的是foo.bar这个值 那么这个值是什么呢 其实是一个匿名函数 function () { return this.a; } 所以 第三个console.log 可以等价为 console.log((function () { return this.a; })()) 故打印出来就是全局上的a变量了 最后留个问题 console.log((a=foo.bar)()) 这个打印出的结果是什么呢
投递网易有道等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务