在线阅读文档时,我对如何在一行中正确定义多个 JavaScript 变量感到困惑。
如果我想压缩以下代码,在一行中定义多个 javascript 变量的正确 JavaScript“严格”方法是什么?
var a = 0;
var b = 0;
是吗:
var a = b = 0;
或者
var a = var b = 0;
等等...
在线阅读文档时,我对如何在一行中正确定义多个 JavaScript 变量感到困惑。
如果我想压缩以下代码,在一行中定义多个 javascript 变量的正确 JavaScript“严格”方法是什么?
var a = 0;
var b = 0;
是吗:
var a = b = 0;
或者
var a = var b = 0;
等等...
使用 Javascript 的 es6 或 node,您可以执行以下操作:
var [a,b,c,d] = [0,1,2,3]
如果您想在一行中轻松打印多个变量,只需执行以下操作:
console.log(a, b, c, d)
0 1 2 3
这类似于 @alex gray 在此处的回答,但此示例使用 Javascript 而不是 CoffeeScript。
请注意,这使用了 Javascript 的数组解构赋值
你想依赖逗号,因为如果你依赖多重赋值结构,你会在某一点或另一点踢自己的脚。
一个例子是:
>>> var a = b = c = [];
>>> c.push(1)
[1]
>>> a
[1]
它们都引用内存中的同一个对象,它们不是“唯一的”,因为无论何时你引用一个对象(数组、对象文字、函数),它都是通过引用而不是值传递的。因此,如果您只更改其中一个变量,并希望它们单独运行,您将无法获得想要的结果,因为它们不是单独的对象。
多重赋值还有一个缺点,即次要变量变成了全局变量,而您不想泄漏到全局命名空间中。
(function() { var a = global = 5 })();
alert(window.global) // 5
最好只使用逗号,最好使用大量空格,以便可读:
var a = 5
, b = 2
, c = 3
, d = {}
, e = [];
没有办法在一行中将赋值作为值来完成。
var a = b = 0;
使 b 全球化。正确的方法(没有泄漏变量)是稍长的:
var a = 0, b = a;
这在以下情况下很有用:
var a = <someLargeExpressionHere>, b = a, c = a, d = a;
为什么不分两行做呢?
var a, b, c, d; // All in the same scope
a = b = c = d = 1; // Set value to all.
原因是为了保留变量声明的局部范围,如下所示:
var a = b = c = d = 1;
将导致b
,c
和d
在窗口范围内的隐式声明。
const person = { name: 'Prince', age: 22, id: 1 };
let {name, age, id} = person;
console.log(name);
console.log(age);
console.log(id);
*你的变量名和对象索引必须相同