如何在一行中定义多个variables?

在线阅读文档,我很困惑如何在一行中正确定义多个JavaScriptvariables。

如果我想压缩下面的代码,那么在一行中定义多个javascriptvariables的正确的JavaScript“严格”方法是什么?

var a = 0; var b = 0; 

是吗:

 var a = b = 0; 

要么

 var a = var b = 0; 

等等…

你想依赖逗号,因为如果你依靠多重任务构造,你会在一个点或另一个点在脚下自己射击。

一个例子是:

 >>> var a = b = c = []; >>> c.push(1) [1] >>> a [1] 

它们都是指内存中的同一个对象,因为每当你引用一个对象(数组,对象字面量,函数)的时候它们都不是“唯一”的。 所以,如果你只是改变其中的一个variables,并希望他们单独行动,你就不会得到你想要的东西,因为它们不是单独的对象。

多重赋值也有一个缺点,即次要variables变成全局variables,而你不想泄露到全局名称空间中。

 (function() { var a = global = 5 })(); alert(window.global) // 5 

最好只使用逗号,最好用很多空格,这样可以读取:

 var a = 5 , b = 2 , c = 3 , d = {} , e = []; 

没有办法在一行中将它赋值为赋值。

 var a = b = 0; 

使b全球。 一个正确的方法(不泄漏variables)是稍长一点:

 var a = 0, b = a; 

为什么不这样做呢?

 var a, b, c, d; //All in the same scope a = b = c = d = 1; // Set value to all. 

之所以保留variables声明的局部范围,是因为这样:

 var a = b = c = d = 1; 

会导致窗口范围内的bcd的隐式声明。

使用Javascript的es6或节点,您可以执行以下操作:

 var [a,b,c,d] = [0,1,2,3] 

如果你想在一行中轻松打印多个variables,只要做到这一点(使用模板文字 ):

 console.log(`${a} ${b} ${c} ${d}`) 

0 1 2 3

这和@alex grey的答案类似,但是这个例子是用Javascript代替CoffeeScript的。

注意你只能用数字和string做这个

你可以做…

 var a, b, c; a = b = c = 0; //but why? c++; // c = 1, b = 0, a = 0;