Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 此节点上的变量作用域返回node.js中未定义的值_Javascript_Node.js - Fatal编程技术网

Javascript 此节点上的变量作用域返回node.js中未定义的值

Javascript 此节点上的变量作用域返回node.js中未定义的值,javascript,node.js,Javascript,Node.js,为什么在Google Chrome中,如果我打开控制台并输入以下逻辑 function foo() { console.log( this.bar ); } var bar = "global"; foo(); …调用foo()的结果是我得到了“global” 但如果我将相同的逻辑放入Visual Studio代码中名为app.js的文件中,并从终端运行节点app.js,我将在浏览器中获得未定义的? function foo() { console.log( this.bar

为什么在Google Chrome中,如果我打开控制台并输入以下逻辑

function foo() {
    console.log( this.bar );
}

var bar = "global";
foo();
…调用foo()的结果是我得到了
“global”

但如果我将相同的逻辑放入Visual Studio代码中名为app.js的文件中,并从终端运行节点app.js,我将在浏览器中获得未定义的

function foo() {
    console.log( this.bar ); //"this" point to "window" it equals to: console.log(window.bar)
}

var bar = "global";
foo();
在Node.js中

function foo() {
    console.log( this.bar );
}

bar = "global"; //implicit declaration variable will be global object's property
foo();

Node.js不创建隐式全局。此外@SLaks还说:浏览器控制台是独特的环境,有很多细微差别:如果你想确保某些东西按预期工作,请将你的js放入
标记中并运行.ahhh-如果我在我的理解中试图从整体上避免隐式全局,这可能是一件好事JavaScript。感谢node.js提供预防措施!您应该始终使用
“使用严格”
在浏览器中,全局
窗口
对象是
的默认上下文。