根据ECMA-262第12.2节,
VariableStatement (即
var identifier=value)明确不返回任何内容。另外, VariableStatement
是一条语句;语句不返回值,并且将Statement放置在expression所在的位置是无效的。
例如,以下任何一项都没有意义,因为它们将一个Statement放置在您需要增值表达式的位置:
var a = var b;function fn() { return var x; }
根据第11.13.1节,
分配 给变量(
identifier=value)会返回分配的值。
在编写时
var a = 1;,它声明
a并将其值初始化为
1。由于这是一个 VariableStatement
,因此不返回任何内容,并且REPL打印
undefined。
a=1是分配
1给的表达式
a。由于没有
a,Javascript会在普通代码中隐式创建一个 全局
变量
a(但是会
ReferenceError在严格模式下抛出,因为您不允许在严格模式下隐式创建新的全局变量)。
无论之前是否
a存在,表达式仍会返回分配的值
1,因此REPL会打印该值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)