在节点中,为什么我在这个例子中未定义?
由于我没有使用严格模式,因此应该可以从函数内部访问它,并且等于Global对象。
this.foo = "bar";
function fun () {
console.log(this.foo);
}
fun(); // undefined
答案 0 :(得分:0)
请参阅此片段,了解MDN中的"use strict"
模式。
首先,作为
this
传递给严格模式的函数的值不会被强制成为对象(a.k.a。“boxed”)。对于正常函数,this
始终是一个对象:如果使用对象值this
调用,则提供的对象;如果使用布尔值,字符串或数字this
调用,则装箱值;或者如果使用未定义或空this
调用全局对象...对于严格模式函数,指定的this
不会被装入对象,如果未指定,this
将是未定义:
有关最佳解释和示例,请参阅参考: "Securing" JavaScript (MDN)
另请参阅stackoverflow中的这篇文章:In node.js, how the 'use strict' statement is interpreted?