Answers:
您希望使用逗号,因为如果您使用多重分配结构,则可能会在某一点或另一点处陷入困境。
一个例子是:
>>> 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 = [];
ReferenceError异常... IMO,应避免使用它们
无法将一行赋值作为值来完成。
var a = b = 0;
使b为全局。正确的方法(不泄漏变量)是稍长的时间:
var a = 0, b = a;
在以下情况下很有用:
var a = <someLargeExpressionHere>, b = a, c = a, d = a;
const person = { name: 'Prince', age: 22, id: 1 };
let {name, age, id} = person;
console.log(name);
console.log(age);
console.log(id);
* 您的变量名称和对象索引必须相同
let { a, b } = { a: 0, b: 0 }。
特别是针对OP的要求,如果要初始化具有相同值的N个变量(例如0),则可以使用数组解构和Array.fill将变量N分配给变量0:
let [a, b, c, d] = Array(4).fill(0);
console.log(a, b, c, d);
var $cls = my.namespace.Foo = function(args){ ... }