[英]Use of var in the global namespace
我正在阅读“您不了解javascript”,并且在“ This&Object Prototypes”一书中发现了一个示例的问题。
在讨论了不同的规则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中的某些内容是否改变了声明全局变量的方式?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.