es6에서는 const 키워드를 사용하여 읽기 전용 상수를 선언할 수 있으며 구문은 "const 상수 이름 = 상수 값;"입니다. 일단 선언되면 상수를 초기화해야 하며 초기화된 값을 변경할 수 없습니다. const로 선언된 상수는 블록 범위에 속하며 "임시 데드 존"의 적용을 받습니다. 이는 창에 전역 속성을 생성하지 않으며 다시 할당하거나 다시 선언할 수 없습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.
es6에서는 const 키워드를 사용하여 읽기 전용 상수를 선언할 수 있습니다.
es6 const 키워드
const는 읽기 전용 상수를 선언합니다. 일단 선언된 상수는 초기화되어야 하며 초기화된 값은 변경할 수 없습니다.
const PI = 3.1415; PI // 3.1415 PI = 3; // TypeError: Assignment to constant variable.
const 상수는 다음 규칙을 따릅니다.
은 블록 범위에 속합니다.
"일시적 데드존"이 적용됩니다.
창에 전역 속성을 생성하지 않습니다.
재배포 불가.
다시 말할 수 없습니다.
const 변수는 선언되면 즉시 초기화해야 합니다.
const foo; // SyntaxError: Missing initializer in const declaration
위 코드는 const의 경우 값을 할당하지 않고 선언만 하면 오류가 보고된다는 것을 나타냅니다.
const의 범위는 let 명령과 동일합니다. 선언된 블록 수준 범위 내에서만 유효합니다.
if (true) { const MAX = 5; } MAX // Uncaught ReferenceError: MAX is not defined
const 명령으로 선언된 상수도 승격되지 않습니다. 임시 데드존도 있으며 선언된 위치 이후에만 사용할 수 있습니다.
if (true) { console.log(MAX); // ReferenceError const MAX = 5; }
위 코드는 상수 MAX가 선언되기 전에 호출되어 오류가 보고됩니다.
const로 선언한 상수는 let처럼 반복해서 선언할 수 없습니다.
var message = "Hello!"; let age = 25; // 以下两行都会报错 const message = "Goodbye!"; const age = 30;
const
const의 본질은 실제로 변수의 값을 변경할 수 없는 것이 아니라 변수가 가리키는 메모리 주소에 저장된 데이터를 변경할 수 없다는 것을 보장합니다. 단순한 유형의 데이터(숫자 값, 문자열, 부울 값)의 경우 값은 변수가 가리키는 메모리 주소에 저장되므로 상수와 동일합니다. 그러나 복합 유형 데이터(주로 객체 및 배열)의 경우 변수가 가리키는 메모리 주소는 실제 데이터에 대한 포인터만 저장합니다. Const는 이 포인터가 고정되어 있다는 것만 보장할 수 있습니다(즉, 항상 다른 고정 주소를 가리킵니다). , 그것이 가리키는 데이터 구조가 가변적인지 여부는 완전히 통제 불능입니다. 그러므로 객체를 상수로 선언할 때는 매우 주의해야 합니다.
const foo = {}; // 为 foo 添加一个属性,可以成功 foo.prop = 123; foo.prop // 123 // 将 foo 指向另一个对象,就会报错 foo = {}; // TypeError: "foo" is read-only
위 코드에서 상수 foo는 객체를 가리키는 주소를 저장합니다. 변경할 수 없는 유일한 것은 이 주소입니다. 즉, foo가 다른 주소를 가리킬 수는 없지만 개체 자체는 변경 가능하므로 여전히 새 속성을 추가할 수 있습니다.
여기 또 다른 예가 있습니다.
const a = []; a.push('Hello'); // 可执行 a.length = 0; // 可执行 a = ['Dave']; // 报错
위 코드에서 상수 a는 배열입니다. 배열 자체는 쓰기 가능하지만, a에 다른 배열이 할당되면 오류가 보고됩니다.
정말로 개체를 고정하려면 Object.freeze 메서드를 사용해야 합니다.
const foo = Object.freeze({}); // 常规模式时,下面一行不起作用; // 严格模式时,该行会报错 foo.prop = 123;
위 코드에서 상수 foo는 고정된 객체를 가리키므로 새 속성을 추가할 수 없으며 엄격 모드에서는 오류가 보고됩니다.
객체 자체를 동결하는 것 외에도 객체의 속성도 동결해야 합니다. 아래는 객체를 완전히 동결시키는 함수입니다.
var constantize = (obj) => { Object.freeze(obj); Object.keys(obj).forEach( (key, i) => { if ( typeof obj[key] === 'object' ) { constantize( obj[key] ); } }); };
【관련 추천: javascript 비디오 튜토리얼, 프로그래밍 비디오】
위 내용은 es6에서 읽기 전용 상수를 선언하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!