有没有更简洁的方法在一行上定义多个javascript变量?
var a = 0,
b = 0,
c = 0,
d = 0,
blah = "";
我想知道我是否可以这样写:
var a = b = c = d = 0,
blah = "";
答案 0 :(得分:4)
你不能这样做:
var a = b = c = d = 0, blah = "";
因为var
语法是这样的,它只是在声明的第一个=
左侧的符号。你可以这样做:
var a, b, c, d = 0, blah = "";
a = b = c = d;
编辑进一步说明:第一个代码示例不会导致语法错误(“严格”模式除外),但它不会执行它可能执行的操作。变量“b”,“c”和“d”是 not 通过这样的语句声明为局部变量。如果它们是全局变量,那么预先存在的值将被覆盖。否则,它们将被隐式声明为全局变量,而不是局部变量。
无论如何,一次一个地声明和初始化变量并没有什么真的很难看。
答案 1 :(得分:3)
你可以这样做:
var a, b, c, d, blah = "";
a = b = c = d = 0;
第二种方式:
var a = b = c = d = 0, //Wrong!! don't do it
blah = "";
错误因为它只会将a
声明为var而其余部分(b, c, d, e
)将是全局变量。可怕的副作用(并且难以察觉)。
但是,我会坚持你展示的经典之作:
var a = 0,
b = 0,
c = 0,
d = 0,
blah = "";
因为它更标准;)。
干杯
答案 2 :(得分:3)
第二种方式获取带副作用的代码
试试这个:
//3 assignments in the 'global' scope
var b = 2,
c = 3,
d = 4;
(function(){
var a = b = 5; //a gets declared in the local scope,
//b get's assigned in the global scope
// var a = (b = 5), where (b = 5) returns the value 5 itself
var d = 5; //d gets declared in the local scope
}());
console.log(d); //4
console.log(b); //5
console.log(c); //3
console.log(a); //ReferenceError, as a is undefined in this scope
尝试仅使用第一个版本以避免收到意外