用逗号初始化/设置多个变量,没有“var”?

时间:2013-03-12 20:00:09

标签: javascript

我见过许多例子:

var foo = 1, bar = 2, baz = 3;

但是,如果没有var,我可以这样做吗?例如:

// Declare at top of block for readability's sake:
var foo, bar, baz;
// ... stuff here ...
// Later in script, I finally get around to initializing above vars:
foo = 1, bar = 2, baz = 3; // Is using commas without var legal?

换句话说,javascript中是否合法有一行我在没有var关键字的情况下初始化/设置多个变量?我无法找到关于是否允许和/或得到良好支持的任何明确文件。

替代方案是:

foo = 1; bar = 2; baz = 3;

以下是引发我提问的现实世界情况:

for (var i = 0, l = haystack.length; i < l; i++) { ... }

...我想将for循环中的变量演化移动到父块的顶层,如:

var i, l;

// ... stuff here ...

for (i = 0, l = haystack.length; i < l; i++) { ... }

...但是我在语句开头使用var时只使用过逗号。以上是合法的(?),还是应该是:

var i, l;

// ... stuff here ...

for (i = 0; l = haystack.length; i < l; i++) { ... }

(注意添加的分号。)

1 个答案:

答案 0 :(得分:4)

在javascript中,您可以用逗号分隔表达式,它们将从左向右执行,返回最右侧表达式的值

所以是的,你可以做到这一点,以下是合法的语法。

for (i = 0, l = haystack.length; i < l; i++) { ... }

在此处详细了解逗号运算符:MDN Docs