2017-12-31 131 views
0

난 유일한 방법은, 그러나 mdn에서이 예에서는 변수가 할당 연산자 사용 보유 값 (=, +=를 ..)
변경 변경하여 nums 변수 복귀 두 다른 값 것을 전에 읽기 할당 연산자를 사용하지 않고 할당에 사용 된 배열 중 하나입니다. 그러나 변수의 값을 변경하는 방법은 무엇입니까?

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

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

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

, I 중첩 배열을 제거하고 단지 4 직접 배열 num2로 푸시 될 때, 인쇄 된 값은 변화하지 않는다.
확인이 example

답변

2

concat 기능은 두 배열의 요소로 구성된 새 배열을 반환합니다.

첫 번째 경우 num1 배열과 nums에는 동일한 내부 배열에 대한 참조가 들어 있으므로 변경하면 두 배열 모두에 반영됩니다.

두 번째 경우에는 배열에 숫자가 들어 있고 배열간에 공유되는 것이 없습니다. 그래서 하나를 선택하면 다른 하나는 변하지 않습니다.

할당 혼란의 경우 nums은 nums에 새 값을 지정할 때까지 항상 동일한 배열을 가리 킵니다. 그렇다고해서 배열 자체의 내용을 변경할 수 없다는 의미는 아닙니다.

+0

맞습니다. 자세한 정보는 concat에 대한 전체 설명을 읽어보십시오. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat –

+0

Nimord에 대한 설명을 주셔서 대단히 감사합니다. –