如何在一行中定义多个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;
会导致窗口范围内的b
, c
和d
的隐式声明。
使用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;