在nodejs中运行时,从对象文字上的箭头函数返回的此的值是多少。这个问题被问到here但是在nodejs中答案是不正确的。它不是全局的,在严格模式下不是未定义。
以下是我正在运行的代码段:
"use strict"; // <-- Has no affect.
let a = {
f: () => this
};
console.log(a.f()) // {}
console.log(a.f() === global); // false
console.log(a.f() === {}); // false
console.log(a.f() === Object.create(null)); // false
更新
另一种说明我看到的内容的方法,在命令提示符下运行:
node -e "let a = { f: () => this }; console.log( a.f() === global);" // returns true
现在,将上面字符串中代码的内容复制到 script.js 并通过以下方式运行:
node script.js // returns false