Javascript &引用;var变量";返回未定义?

Javascript &引用;var变量";返回未定义?,javascript,Javascript,当我在chrome控制台中运行“var variable=true;”时,返回“undefined”: > var variable = true; undefined 但当我在没有“var”的情况下运行时,它返回true: > variable = true; true 为什么它返回“undefined”和“var” 这让人困惑,因为我希望它会返回true。第一个是语句,而第二个是表达式。虽然不完全相同,但它与C的规则相似: // A statement that has no

当我在chrome控制台中运行“var variable=true;”时,返回“undefined”:

> var variable = true;
undefined
但当我在没有“var”的情况下运行时,它返回true:

> variable = true;
true
为什么它返回“undefined”和“var”


这让人困惑,因为我希望它会返回true。

第一个是语句,而第二个是表达式。虽然不完全相同,但它与C的规则相似:

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

// An expression...
x = 10;

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

第一个是语句,第二个是表达式。虽然不完全相同,但它与C的规则相似:

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

// An expression...
x = 10;

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

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

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

var x=y
是一条不返回值的语句。在WebKit JS控制台中,不返回值的语句将显示结果
undefined
,例如:

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

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

var x=y
是一条不返回值的语句。在WebKit JS控制台中,不返回值的语句将显示结果
undefined
,例如:

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

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

语句总是返回
未定义的

var color = "red"; 
undefined
表达式总是返回一个值

color = "orange";
"orange"

语句总是返回未定义的

var color = "red"; 
undefined
表达式总是返回一个值

color = "orange";
"orange"

我想指出,提供的答案应该是公认的答案,至少出于教学目的。被接受的答案不能回答为什么会这样,也不能提供更深入的理解

与JavaScript中的
null
值一样,
undefined
表示没有值,但其含义要深刻得多。以下内容应视为对上述答案的补充:

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

您可以考虑<代码>未定义来表示一个系统级别,出乎意料, 或表示程序级别的错误,如缺少值和

null
, 正常,或预期无值

--弗拉纳根,大卫。JavaScript:最终指南:激活您的Web 第页(权威指南)。奥雷利媒体。Kindle版

此外,请务必查看被接受的答案和投票数第二多的答案,以供进一步参考:
我想指出的是,提供的答案应该是公认的答案,至少出于教学目的。被接受的答案不能回答为什么会这样,也不能提供更深入的理解

与JavaScript中的
null
值一样,
undefined
表示没有值,但其含义要深刻得多。以下内容应视为对上述答案的补充:

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

您可以考虑<代码>未定义来表示一个系统级别,出乎意料, 或表示程序级别的错误,如缺少值和

null
, 正常,或预期无值

--弗拉纳根,大卫。JavaScript:最终指南:激活您的Web 第页(权威指南)。奥雷利媒体。Kindle版

此外,请务必查看被接受的答案和投票数第二多的答案,以供进一步参考:

使用“var variable=true”是有效的js代码,还是应该运行“var variable;variable=true;”?@ajsie-它是有效的,并且两个语句都是等效的。是的,它是有效的代码。您可以在执行语句后通过计算
variable
来确认这一点。使用“var variable=true”是有效的js代码,还是应该运行“var variable;variable=true;”?@ajsie-它是有效的,并且两个语句都是等效的。是的,它是有效的代码。您可以在执行语句后通过计算变量来确认这一点。