var x = 10;
var foo = {
x: 20,
bar: function ()
{
var x = 30;
return this.x;
}
};
alert(
(foo.bar = foo.bar)(),
(foo.bar, foo.bar)()
);
为什么
(foo.bar = foo.bar)()
(foo.bar, foo.bar)()
会输出结果10
(foo.bar = foo.bar)()
相当于var a = foo.bar; a()
(foo.bar, foo.bar)()
相当于var a = foo.bar; a()
而在非严格模式,
a()
的this
指针 指向window
同时 全局变量
var x = 10;
也可以通过window.x
访问到于是
a()
就变成了window.x
也就是10
了