相关疑难解决方法(0)

NodeJS中的"全局"对象是什么

我刚刚this在NodeJS环境中看到了关键字的奇怪行为.我用代码列出它们.我NodeJS v6.x用一个JavaScript文件运行这些代码.

在使用以下一行代码进行测试时,无论是否使用该'use strict'语句,都指向一个空对象{}.

console.log(this)
Run Code Online (Sandbox Code Playgroud)

但是,当我在自执行函数中运行语句时,

(function(){
  console.log(this);
}());
Run Code Online (Sandbox Code Playgroud)

它正在打印一个非常大的对象.在我看来环境创建的全局执行上下文对象NodeJS.

在使用'use strict'语句执行上述功能时,预计会打印undefined

(function(){
  'use strict';

  console.log(this);
}());
Run Code Online (Sandbox Code Playgroud)

但是,在使用浏览器(我只测试过Chrome)时,前三个示例产生window对象,最后一个示例undefined按预期方式给出.

浏览器的行为是可以理解的.但是,如果是NodeJS,它不会创建执行上下文,直到我在函数内部包装?

那么,大多数代码NodeJS运行时都是空的全局 object

javascript scope global this node.js

43
推荐指数
5
解决办法
2万
查看次数

从脚本到命令行的节点中的全局变量赋值

我有以下脚本:

/* script.js */
var bar = "bar1";

function foo() {
    console.log('this.bar: ' + this.bar);
    console.log('global.bar: ' + global.bar);
}
foo();
Run Code Online (Sandbox Code Playgroud)

运行node script.js回报:

this.bar: undefined
global.bar: undefined
Run Code Online (Sandbox Code Playgroud)

但是,从节点命令行环境内部,再现相同的脚本将返回:

this.bar: bar1
global.bar: bar1
Run Code Online (Sandbox Code Playgroud)

另外,如果我改变从我的变量声明var bar = "bar1";global.bar = "bar1";运行上面的代码返回的两种方法:

this.bar: bar1
global.bar: bar1
Run Code Online (Sandbox Code Playgroud)

有什么不同?运行脚本与在同一环境中重现脚本时,全局变量赋值是否有所不同?

javascript node.js

11
推荐指数
1
解决办法
1466
查看次数

标签 统计

javascript ×2

node.js ×2

global ×1

scope ×1

this ×1