当我运行“var variable = true;”时在Chrome控制台中我得到“未定义”返回:
> var variable = true;
undefined
但是当我没有“var”运行时,它返回true:
> variable = true;
true
为什么用“var”返回“undefined”?
令人困惑,因为我预计它会回归真实。
答案 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