我正在阅读"你不知道javascript"我在书中找到了一个例子,并且#34;这个&对象原型"。
讨论this
的不同规则时,特别是在"隐式绑定"段落,作者给出了这个例子:
function foo() {
console.log( this.a );
}
var obj = {
a: 2,
foo: foo
};
var bar = obj.foo; // function reference/alias!
var a = "oops, global"; // `a` also property on global object
bar(); // "oops, global"
然而,当在JSFiddle上尝试这个时,我在控制台中得到一个未定义的输出而不是" oops,global"。
相反,如果我定义a
没有var
或使用window.a
,我会得到作者想要的输出而不管严格模式。
为什么会这样? ES6中的某些内容是否会改变应声明全局变量的方式?