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)()是否相同,如果有区别是什么区别?
1 回答
慕容708150
TA贡献1831条经验 获得超4个赞
后三个括号里面都是表达式,中间产生了一个匿名的函数,调用的实际上是这个匿名的函数,所以这里的function context变成了global的了。
如果没有生成新的匿名表达式,这种写法应该是等价的。
添加回答
举报
0/150
提交
取消