请高手帮忙解释一段JS?

var foo = {
    bar: function () {
        console.log(this);
    }
};

foo.bar(); //  foo object
(foo.bar)(); //  foo object

(foo.bar = foo.bar)(); // window
(false || foo.bar)(); // window
(foo.bar, foo.bar)(); // window

请高人帮忙解释一下,为什么最后三个输出的是 window?

另外foo.bar()与(foo.bar)()是否相同,如果有区别是什么区别?

慕运维8079593
浏览 440回答 1
1回答

慕容708150

后三个括号里面都是表达式,中间产生了一个匿名的函数,调用的实际上是这个匿名的函数,所以这里的function context变成了global的了。   如果没有生成新的匿名表达式,这种写法应该是等价的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript