2017-12-31 230 views
0

私は変更することによってmdnnums可変戻り2つの異なる値から
(.. =+=、)変数が保持する値を変更する唯一の方法は、代入演算子を使用していることを前に読み取るしかし、この例では代入演算子を使用せずに代入で使用された配列の1つ。しかし 変数の値を変更する方法は何ですか?

var num1 = [[1]]; 
 
var num2 = [2, [3]]; 
 

 
var nums = num1.concat(num2); 
 
console.log(nums); 
 

 
num1[0].push(4); 
 
console.log(nums);

、私はネストされた配列を削除し、ちょうど 4直接配列 num2に押すと、印刷された値は変更されません。
これをチェックする example

答えて

2

concat関数は、両方の配列の要素で構成される新しい配列を返します。

最初のケースでは、num1アレイとnumsには同じ内側配列への参照が含まれているため、変更するとその両方に反映されます。

2番目のケースでは、配列に数値が含まれており、配列間で共有されるものはありません。そういうわけで、あなたが1つにプッシュすると、もう1つは変わらないのです。

割り当ての混乱については、numsは、numsに新しい値を割り当てるまで、常に同じ配列を指します。つまり、配列自体の内容を変更することはできません。

+0

そうです。詳細については、concatの完全な説明を読んでください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat –

+0

Nimordの説明をありがとう –

関連する問題