【问题标题】:Javascript: multiple variable declaration - when does the variable become available?Javascript:多变量声明 - 变量何时可用?
【发布时间】:2012-06-05 04:37:11
【问题描述】:

假设我以以下方式声明变量列表:

var a = "value_1"
  , b = "value_2"
  , c = b;

c 的期望值是多少?换句话说,变量的范围是在逗号之后立即可用,还是直到分号才可用?

这与下面的代码 sn-p 相反,很明显c 的值将是"value_2"

var a = "value_1";
var b = "value_2";
var c = b;

我想我会问而不是在浏览器中进行测试,只是假设行为将是一致的。

【问题讨论】:

    标签: javascript scope variable-declaration


    【解决方案1】:

    the comma operator:

    逗号运算符计算它的两个操作数(从左到右)并返回第二个操作数的值

    所以b = "value_2"c = b 之前被评估

    【讨论】:

    • 不是逗号操作符。如果是这样,这将工作var a = 'foo', (b = 'bar', c = 'baz')
    • 阅读您链接的文档可能是个好主意:“请注意,var 语句中的逗号不是逗号运算符...”
    • 也来自那些文档“实际上,逗号的行为几乎与逗号运算符相同”
    • 是的,在从左到右发生分配的非常狭窄的上下文中。链接到这些文档只会产生误导。
    • 刚刚看到这个不相关的帖子 - stackoverflow.com/questions/7609276/… - 有相关的例子需要澄清 - 基本上,解释器保留所有分配,直到范围内的所有声明都首先运行,并保持顺序。
    【解决方案2】:

    这并不是问题的真正答案,但是当面对同一事物的两种表达方式之间的这种选择时,请始终选择不那么模棱两可的一种。

    在您的第二个代码 sn-p 中,每个人都清楚最终状态是什么。对于第一个,好吧,你必须在这里问一个问题才能知道 :) 如果你在一个月后回到代码,或者如果其他人这样做,那么你将不得不经历相同的查找过程出实际意义。我认为您保存的 6 个字符不值得。

    【讨论】:

    • 万岁。简洁之前的可理解性。一个信徒
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 2011-05-04
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多