相关疑难解决方法(0)

为什么在文件中和函数内声明的'this'指向Node.js中的不同对象

我有一个这样的脚本:

var test = function(){
    console.log('From test: '  + this);
};
console.log(this);
test();
Run Code Online (Sandbox Code Playgroud)

我运行的是哪个node test.js.而我对脚本的期望是this指向全局对象,但只有this测试函数指向global对象. console.log(this);实际上指向一个空对象.

我试图理解为什么node.js有这种行为,我误解了this关键字如何在node.js中工作.

javascript this node.js

9
推荐指数
0
解决办法
104
查看次数

具有闭包的For循环保存状态

原谅我,如果这可能是一个noobie问题,但这应该工作不应该吗?

var elems = [1,2,3,4,5]

for (var i = 0; i <elems.length; i++) {
    return (function(e){
        console.log(e)
    })(i);
}
Run Code Online (Sandbox Code Playgroud)

意思是,它应该吐出来

>>node file.js
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这不是这样做的.而是当它在终端中运行时,它会吐出来

>>node file.js
1
Run Code Online (Sandbox Code Playgroud)

我错过了什么?你能详细说明吗?

javascript closures for-loop node.js

6
推荐指数
1
解决办法
539
查看次数

Node中存储的变量在哪里?

在任何Web浏览器中,执行以下脚本将导致'wee'发送到控制台.在节点中它发送{}.

var d = 'wee';
console.log(this.d);
Run Code Online (Sandbox Code Playgroud)

我意识到Node this在这种情况下指的是exports对象.我知道global变量,这不是我想要访问的.此外,上面的脚本也没有d在全局对象上设置.它到底在哪里?我可以console.log(d);在上面的脚本中明确地访问它,但它似乎被隐藏在一些非标准空间中,完全没有任何理由.

我也意识到删除var意志会dglobal对象上声明,这是预期的行为,尽管var在顶层范围内将其值存储在与"裸"变量不同的位置似乎很愚蠢.我的意思是,模块系统不应该是某种数字预防措施来防范全球污染吗?在这里打破模式似乎很容易,因此很难做出标准的事情.

d也未在module对象上声明.

我没有必要证明我为什么要问这个问题,但我会回答第一个问题,但是"你为什么要做什么?"

var d = {};
d.bleep = 'y';
var a = Object.keys(d);

d.bloop = 'y';
d.blop = 'y';

var b = Object.keys(d);

// c = b - a;
var c = b.filter(function (item) {
    if(a.indexOf(item) === -1) {
        return true;
    }
    return false;
});

console.log(a,b,c);
Run Code Online (Sandbox Code Playgroud)

以我可以区分某些对象状态的方式d,我应该能够区分顶级范围的状态.在浏览器中,这是 …

javascript variables scope global-variables node.js

5
推荐指数
1
解决办法
891
查看次数

全局和内部函数中的`this`

根据MDN的这个解释:

  • 在全局上下文中,this指的是全局对象
  • 在函数上下文中,如果直接调用函数,它再次引用全局对象

然而,以下内容:

var globalThis = this;
function a() {
    console.log(typeof this);
    console.log(typeof globalThis);
    console.log('is this the global object? '+(globalThis===this));
}

a();
Run Code Online (Sandbox Code Playgroud)

...放在文件中foo.js产生:

$ nodejs foo.js 
object
object
is this the global object? false
Run Code Online (Sandbox Code Playgroud)

javascript this node.js

5
推荐指数
1
解决办法
488
查看次数

Node.js 如何将脚本加载到内存中?

在浏览器中,将按照定义的顺序解析 DOM 并加载和解析脚本。

在 Node.js 中,脚本是如何加载到内存中的?

require初始化时是否遍历了每个文件中的语句定义的整个脚本图,以及生成的对象和值填充堆栈和堆以准备开始执行?

javascript node.js

4
推荐指数
1
解决办法
1380
查看次数

Nodejs 模块中的“this”是什么意思?

我有一个如下所示的简单代码并将其作为节点模块执行:

\n\n
console.log(this);\nmodule.exports = {\xe2\x80\xa6};\n
Run Code Online (Sandbox Code Playgroud)\n\n

我知道这global是默认上下文(就像window在浏览器中一样),但是this关键字指的是什么呢?

\n

javascript global this node.js

2
推荐指数
1
解决办法
510
查看次数