0
我有下面的代码,我期望的结果将打印2,2.为什么在浏览器和nodeJS中运行以下代码存在差异?
当我在nodeJS控制台运行它,我得到了未定义,未定义。 当我在Chrome中运行它时,我得到了期望的值。
我的问题,这个结果有什么不同?
var a = 2;
function foo(){
console.log(this.a);
}
(function(){
foo();
}())
function doFoo(fn){
fn();
}
var obj ={
a:3,
foo:foo
};
doFoo(obj.foo);
正确,浏览器中的全局变量是“窗口”的属性。所以当你声明var a = 2;基本上这会创建window.a = 2; – Pratyush
@王绍豪:如何在javascript中声明局部变量:'var a'。如何在javascript'let a'中声明块变量。如何在javascript中声明全局变量:'a'。在javascript中,不使用'var'或'let'关键字来分配变量就会创建一个全局变量。 – slebetman
谢谢!我会将其标记为答案。 –