回答:
複数の割り当て構造に依存している場合は、足元のどこかで自分を撃つことになるので、コンマに依存する必要があります。
例は次のとおりです。
>>> var a = b = c = [];
>>> c.push(1)
[1]
>>> a
[1]
それらはすべてメモリ内の同じオブジェクトを参照します。オブジェクト(配列、オブジェクトリテラル、関数)への参照を作成すると、値ではなく参照によって渡されるため、「一意」ではありません。したがって、これらの変数の1つだけを変更し、それらを個別に動作させたい場合、それらは個別のオブジェクトではないため、必要なものが得られません。
複数の割り当てには、2次変数がグローバルになり、グローバル名前空間にリークしたくないという欠点もあります。
(function() { var a = global = 5 })();
alert(window.global) // 5
読みやすくするために、カンマだけを使用することをお勧めします。できれば、多くの空白を入れてください。
var a = 5
, b = 2
, c = 3
, d = {}
, e = [];
ReferenceErrorべきことは、ES5 Strict Modeで宣言されていない割り当ては例外を引き起こすことです... IMO、それらは回避する必要があります...
JavaScriptのes6またはノードを使用すると、次のことができます。
var [a,b,c,d] = [0,1,2,3]
また、複数の変数を1行で簡単に出力する場合は、次のようにします。
console.log(a, b, c, d)
0 1 2 3
これはここでの@alex grayの回答に似ていますが、この例はCoffeeScriptではなくJavaScriptにあります。
これは、Javascriptの配列を破壊する割り当てを使用することに注意してください。
console.log(a,b,c,d)代わりにこのケースで使用しないのはなぜですか?それはより短く、同じ出力を提供します
割り当てを値として1行で行う方法はありません。
var a = b = 0;
bをグローバルにします。正しい方法(変数のリークなし)は少し長くなります。
var a = 0, b = a;
これは次の場合に便利です。
var a = <someLargeExpressionHere>, b = a, c = a, d = a;
2行で実行してみませんか?
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);
* 変数名とオブジェクトインデックスは同じである必要があります
let { a, b } = { a: 0, b: 0 }ます。これはと同等であるためです。
var $cls = my.namespace.Foo = function(args){ ... }