定义var时抛出undefined

时间:2015-09-03 16:59:55

标签: javascript google-chrome undefined

下一个代码在Google-chrome控制台中解释:

a = 123
123
     % Ok!

var b = 123
undefined
     % `undefined`? why? b is not undefined, it contains `123`.

2 个答案:

答案 0 :(得分:2)

var是一个声明。语句没有值,因此eval()(控制台调用)返回undefined

a = 123是一个简单的表达式,它返回123(这样你就可以写b = a = 123)。传递表达式时,eval()将返回表达式的值。

答案 1 :(得分:2)

我认为你在控制台中这样做,向你展示操作的结果。

赋值表达式的结果是已分配的值。但是var语句不会 结果,尤其是因为它们不会在通常的逐步代码流程中出现。我们可以在规范中var语句的定义中看到这一点:§13.3.2.4告诉我们var的结果是抽象规范调用NormalCompletion(empty),它是{{ 3}} Completion{[[type]]: normal, [[value]]: argument, [[target]]:empty}用于just an alias。在这种情况下,它完成没有任何价值。 (令人惊讶的是,并非所有JavaScript语句都是如此。)