我见过许多例子:
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++) { ... }
(注意添加的分号。)
答案 0 :(得分:4)
在javascript中,您可以用逗号分隔表达式,它们将从左向右执行,返回最右侧表达式的值
所以是的,你可以做到这一点,以下是合法的语法。
for (i = 0, l = haystack.length; i < l; i++) { ... }
在此处详细了解逗号运算符:MDN Docs