당황스러운 상수: JavaScript에서 상수 객체를 수정할 수 있는 이유
ECMAScript 6에서 상수에 대한 명확한 정의에도 불구하고, 재할당하거나 재선언할 수 없는 불변 값으로 선언된 경우 현재 const 키워드를 지원하는 많은 브라우저는 다음과 같습니다. 상수 객체에 대한 특정 수정을 허용합니다.
이러한 모순은 JavaScript의 상수 동작 기술에서 발생합니다. 상수를 직접 재할당하거나 재선언할 수는 없지만 상수 개체의 속성을 변경할 수는 있습니다.
그 이유는 배열에서 요소를 추가하거나 제거하거나 배열에서 속성을 추가하거나 변경할 때 발생합니다. 실제로 상수 자체를 변경하는 것은 아닙니다. 오히려 상수가 가리키는 객체의 내부 상태를 수정하고 있습니다.
예를 들어 다음 코드에서는
const yyy = []; yyy.push(6); yyy.push(1);
yyy가 동일한 배열에 대한 참조로 남아 있지만 해당 배열의 내용이 변경됩니다. 마찬가지로 다음 코드에서는
const x = {}; x.foo = 'bar';
x가 계속해서 동일한 객체를 참조하지만 해당 객체에 새로운 속성인 foo가 추가됩니다.
따라서 다음이 가능합니다. 상수 객체의 상태를 수정할 수 있지만 상수 자체를 재할당하거나 다시 선언할 수는 없습니다.
위 내용은 JavaScript에서 상수 객체를 수정할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!