JavaScript Impact Copy에서 배열을 변경하는 이유는 무엇입니까?
JavaScript에서 배열은 개체이며 변수는 배열이 아닌 이러한 개체에 대한 참조를 보유합니다. 개체 자체. 이 상속으로 인해 배열에 새 값을 할당할 때 예기치 않은 동작이 발생할 수 있습니다.
예를 고려해 보세요.
// Declare an array and its copy var myArray = ['a', 'b', 'c']; var copyOfMyArray = myArray; // Modify the copy of the array copyOfMyArray.splice(0, 1); // Display the values alert(myArray); // ['b', 'c'] alert(copyOfMyArray); // ['b', 'c']
copyOfMyArray를 조작하여 실수로 myArray를 수정했습니다. 이는 myArray 및 copyOfMyArray와 같은 변수가 동일한 기본 배열 객체를 가리키기 때문입니다.
배열과 숫자 비교
반면, myNumber 및 copyOfMyNumber와 같은 숫자로 작업할 때는 각 변수는 값 자체의 복사본을 보유합니다. 하나를 수정해도 다른 하나는 영향을 받지 않습니다.
var myNumber = 5; var copyOfMyNumber = myNumber; // Decrement the copy of the number copyOfMyNumber--; // Display the values alert(myNumber); // 5 alert(copyOfMyNumber); // 4
결과 및 해결 방법
올바른 개체 조작을 위해서는 이 동작을 이해하는 것이 중요합니다. 배열의 고유한 복사본이 꼭 필요한 경우에는 슬라이스 메서드를 사용하여 얕은 복사본을 만듭니다.
var copyOfMyArray = myArray.slice(0);
그러나 이 얕은 복사본은 해당 요소에 대한 배열 참조만 복제한다는 점에 주목할 가치가 있습니다. 모든 내부 객체는 여전히 동일한 원본 인스턴스를 참조합니다.
위 내용은 원본이 변경되면 JavaScript 배열 복사본도 변경되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!