在Node中,这个内部函数等于未定义的

时间:2016-10-09 16:18:18

标签: javascript node.js

在节点中,为什么我在这个例子中未定义?

由于我没有使用严格模式,因此应该可以从函数内部访问它,并且等于Global对象。

this.foo = "bar";

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

fun(); // undefined

1 个答案:

答案 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?