2016-05-09 4 views

答えて

3

let x, y; 
x = y = 'hi'; 

それが可能となり、割り当ての連鎖と呼ばれ

let x, y = 'hi' 

、それはこれにコンパイルします:

はこれを試してみました複数の変数に1つの値を割り当てます。
詳細assignment operatorを参照してください。あなたがこの方法を行うことができます

let [w, x, y, z] = Array(4).fill('hi'); 
1

..しかし、それを回避しようと提案するマイ:あなたが2つの以上の変数を持っている場合は


は、それが割り当てを破壊配列を使用することが可能です。

var one, two, three; 
one = two = three = ""; 
+0

JS自体は文字列などの明示的に定義された型を使用しません。 –

+0

なぜ私はそれを避けるべきですか? –

+0

@torazaburoそれはあなたが何か間違っているという強い正の兆候だからです。同じデータで3つではなく、1つの変数を作成してください。 – zerkms

0

これは正常な動作です。 EMCA-262 6th editionから:

let宣言でLexicalBindingInitializer変数が LexicalBindingが評価された値undefinedが割り当てられていない場合。

-2
var x = y = 'hi'; 
alert('x'+x); 
alert('y'+y); 

Fiddle

6

単に

let x = 'hi', y = x; 

だけでなく、上の分割代入を好む理由は絶対にありません、それは1つの文の代わりに、2だが、それはまた、余分な配分(回避理由のない少なくとも1つのオブジェクトを割り当てます)。

+0

しかし、約5つの変数はありますか? 'let x = 'hi'、a = x、b = x、c = x、d = x'とする。読みにくい –

+1

@DmitriPavlutinは、5つの同一の変数を作成する必要があるコードを書くことはしません(最初の場所では厄介なように見えます)。 – zerkms

+2

@zerkms私はあなたに、「destructuring assignment_を優先させる理由は絶対にありません。 x = 'hi'、y = x; '" –

関連する問題