【发布时间】:2013-04-08 06:42:48
【问题描述】:
为什么常规赋值语句(比如x = 5)返回赋值(在这种情况下为5),而赋值与变量声明(var x = 5)组合返回undefined?
我通过在 Chrome 浏览器的 Javascript 控制台中执行这些语句得到了返回值:
> var x = 5;
undefined
> y = 5;
5
【问题讨论】:
-
Difference between using var and not using var in JavaScript 的可能副本。看看kangax的答案。 “
var x = 1在当前作用域(又名执行上下文)中声明变量x....另一方面,x = 1只是一个属性赋值。它首先尝试针对作用域链解析x。如果它在该范围链中的任何位置找到它,它就会执行赋值;如果它没有找到x,那么它只会在全局对象上创建x属性。" -
那个有趣..我从来没有注意到这个!
-
我认为
x = 5是一个能够返回值的表达式,而var x = 5是一个不能返回值的语句。最明显的是,您不能内联声明变量,即console.log(var x = 5)。你从哪里得到undefined的返回值? -
通过什么例子让您认为 x=5 实际上“返回”?
-
@AbbyChauYuHoi 我也不同意
return关键字,但由于某种原因我的回答被否决了。我不明白这些人......
标签: javascript assignment-operator