다음 JavaScript를 작성했습니다.
var myArray = ['a', 'b', 'c'];
var copyOfMyArray = myArray;
copyOfMyArray.splice(0, 1);
alert(myArray); // alerts ['b','c']
alert(copyOfMyArray); // alerts ['b','c']
var myNumber = 5;
var copyOfMyNumber = myNumber;
copyOfMyNumber = copyOfMyNumber - 1;
alert(myNumber); // alerts 5
alert(copyOfMyNumber); // alerts 4
이 코드는 변수를 선언하고 myArray배열 값으로 설정합니다. 그런 다음 두 번째 변수를 선언 copyOfMyArray하고로 설정합니다 myArray. 에서 작업을 수행 한 copyOfMyArray다음 myArray및 모두에 경고를 보냅니다 copyOfMyArray. 어떻게 든에서 작업을 수행하면 copyOfMyArray에서 동일한 작업이 수행되는 것처럼 보입니다 myArray.
그런 다음 코드는 숫자 값으로 동일한 작업을 수행합니다. 변수를 선언하고 myNumber이를 숫자 값으로 설정합니다. 그런 다음 두 번째 변수를 선언 copyOfMyNumber하고로 설정합니다 myNumber. 에서 작업을 수행 한 copyOfMyNumber다음 myNumber및 모두에 경고를 보냅니다 copyOfMyNumber. 여기에서 예상되는 동작을 얻습니다 . myNumber및에 대한 다른 값입니다 copyOfMyNumber.
배열을 변경하면 배열 사본의 값이 변경되는 것처럼 보이는 JavaScript에서 배열과 숫자의 차이점은 무엇입니까? 숫자를 변경해도 숫자 사본의 값은 변경되지 않습니까?
어떤 이유로 배열은 참조로 참조되고 숫자는 값으로 참조되지만 그 이유는 무엇입니까? 다른 개체에 대해 예상되는 동작을 어떻게 알 수 있습니까?
myArray.slice(0);그 맥락에서 직접 할당하면 어떤 단점이 있습니까?