“var variable”返回undefined?

时间:2010-10-07 08:55:33

标签: javascript

当我运行“var variable = true;”时在Chrome控制台中我得到“未定义”返回:

> var variable = true;
undefined

但是当我没有“var”运行时,它返回true:

> variable = true;
true

为什么用“var”返回“undefined”?

令人困惑,因为我预计它会回归真实。

5 个答案:

答案 0 :(得分:6)

第一个是声明,第二个是表达式。虽然不完全相同,但它类似于C的规则:

// A statement that has no value.
int x = 5;

// An expression...
x = 10;

// ...that can be passed around.
printf("%d\n", x = 15);

答案 1 :(得分:3)

var x = y;语句,不返回任何值。在WebKit JS控制台中,不返回任何值的语句将显示undefined作为结果,例如

> if(1){}
undefined
> ;
undefined
> if(1){4}  // this statement returns values!
4

赋值是表达式,它返回LHS的值。这意味着,这个表达式语句有一个返回值,这将显示。

答案 2 :(得分:1)

分配返回赋值的值,但var此返回值为“消耗”(?)

答案 3 :(得分:0)

语句始终返回undefined

var color = "red"; 
undefined

表达式总是返回一个值。

color = "orange";
"orange"

答案 4 :(得分:0)

我想指出的是,kennytm提供的答案应该是可接受的答案,至少出于教学目的。公认的答案无法回答为什么会出现这种情况,或者无法提供更深入的了解。

就像JavaScript中的null值一样,undefined表示没有值,但是以更深层的方式表示。以下应作为上述答案的补充:

  

undefined是尚未初始化的变量的值,并且   查询对象属性的值时得到的值或   数组元素不存在。此值也由返回   没有返回值的函数,以及函数的值   没有提供参数的参数。 undefined是预定义的   初始化的全局变量(不是像null这样的语言关键字)   到未定义的值。

     

您可能认为undefined代表系统级别的,意外的,   或类似错误的值缺失和null代表程序级​​别,   正常或预期的价值缺失。

     

-大卫·弗拉纳根。 JavaScript:权威指南:激活您的网站   页数(权威性指南)。 O'Reilly Media。 Kindle版。

此外,请确保同时检查已接受的投票和第二投票的答案,以供进一步参考: Chrome/Firefox console.log always appends a line saying undefined