Javascript:多变量声明-变量何时可用?
假设我以以下方式声明变量列表:Javascript:多变量声明-变量何时可用?,javascript,scope,variable-declaration,Javascript,Scope,Variable Declaration,假设我以以下方式声明变量列表: var a = "value_1" , b = "value_2" , c = b; c的预期值是多少?换句话说,变量的作用域是在逗号之后立即可用,还是在分号之后才可用 这与下面的代码段相反,在下面的代码段中,c的值将是“value_2”: 我想我应该询问而不是在浏览器中测试,并假设行为是一致的。参见: 逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值 因此,在计算b=“value_2”之前,必须先计算c=b这并不是问题的真正答案,但当面对在
var a = "value_1"
, b = "value_2"
, c = b;
c
的预期值是多少?换句话说,变量的作用域是在逗号之后立即可用,还是在分号之后才可用
这与下面的代码段相反,在下面的代码段中,c
的值将是“value_2”
:
我想我应该询问而不是在浏览器中测试,并假设行为是一致的。参见:
逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值
因此,在计算
b=“value_2”
之前,必须先计算c=b
这并不是问题的真正答案,但当面对在同一事物的两个表达式之间做出这样的选择时,请始终选择不那么模棱两可的表达式
在第二段代码中,每个人都清楚最终状态是什么。对于第一个问题,你必须在这里问一个问题才能知道:)如果你在一个月后回到代码中,或者如果其他人这样做了,那么你必须经历同样的过程来找出真正的含义。我认为你保存的6个字符不值得。万岁。简洁之前的可理解性。有人相信它不是逗号运算符。如果是这样的话,这将起作用。
var a='foo',(b='bar',c='baz')
阅读您链接的文档可能是一个好主意:“注意var语句中的逗号不是逗号运算符…”同样来自那些文档“实际上,逗号的行为几乎与逗号运算符相同,尽管”是,在从左到右的作业范围内。链接到那些文档只是一种误导。刚看到这篇无关的文章——其中有相关的例子要澄清——基本上,解释器会在范围内的所有声明都首先运行之后才进行所有赋值,并维持顺序。
var a = "value_1";
var b = "value_2";
var c = b;