>  기사  >  웹 프론트엔드  >  JavaScript의 새로운 const, let 및 var 명령의 비교 및 ​​사용법에 대한 자세한 설명

JavaScript의 새로운 const, let 및 var 명령의 비교 및 ​​사용법에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-22 11:37:492024검색

변수를 선언하는 const 및 let 명령이 추가되었습니다.

선언 방법 변수 프로모션 Scope 초기값 정의가 중복됨
const No 블록 수준 필수 허용되지 않음
let 아니요 블록 수준 필요하지 않음 허용되지 않음
var 기능 수준 필요하지 않음 허용됨

const 및 let은 먼저 재사용으로 선언되어야 합니다. 변수 승격을 지원하지 않습니다


console.log(c1, l1, v1);
// 报错
// Uncaught ReferenceError: c1 is not defined
 
const c1 = 'c1';
let l1 = 'l1';
var v1 = 'v1';

범위: const, let은 블록 수준 범위를 지원하여 변수 범위를 효과적으로 방지합니다


const c21 = 'c21';
let l21 = 'l21';
var v21 = 'v21';
 
if (0.1 + 0.2 != 0.3) {
 const c21 = 'c22';
 let l21 = 'l22';
 var v21 = 'v22';
 
 console.log(c21, l21, v21);
 // 输出 c22 l22 v22
}
 
console.log(c21, l21, v21);
// 输出 c21 l21 v22

블록 수준 범위, 내부 변수는 외부 레이어에서 직접 액세스할 수 없습니다


if (0.1 + 0.2 != 0.3) {
 const c22 = 'c22';
 let l22 = 'l22';
 var v22 = 'v22';
 
 console.log(c22, l22, v22);
 // 输出 c22 l22 v22
}
 
console.log(c22, l22, v22);
// 报错
// Uncaught ReferenceError: c22 is not defined
// 同样地, l22 is not defined

const는 상수를 정의합니다. 상수에는 값을 할당할 수 없지만 상수의 속성은 할당할 수 있습니다.


const c231 = {};
const c232 = [];
 
c231.name = 'seven';
c232.push(27);
 
console.log(c231, c232);
// 输出 {name: "seven"} [27]
 
// 禁止给对象赋值,应该使用 Object.freeze
 
const c233 = Object.freeze({});
const c234 = Object.freeze([]);
 
c233.name = 'seven';
// 普通模式下不报错
// 严格模式下报错
// Uncaught TypeError: Cannot add property name, object is not extensible
  
c234.push(27);
// 普通模式下就会报错
// Uncaught TypeError: Cannot add property 0, object is not extensible
 
console.log(c233, c234);
// 输出 {} []

전역 변수는 더 이상 최상위 개체(창)의 속성으로 설정되지 않습니다. ), 전역 변수 오염을 효과적으로 방지


const c24 = 'c24';
let l24 = 'l24';
 
console.log(c24, l24);
// 输出 c24 l24
 
console.log(window.c24, window.l24);
// 输出 undefined undefined

기대를 충족하는 for 루프


for (var i = 0; i != 3; i++) {
 setTimeout(function() {
  console.log(i);
 },10);
}
// 依次打印

for (let i = 0; i != 3; i++) {
 setTimeout(function() {
  console.log(i);
 },10);
}
// 依次打印,为啥呢

for 루프에서 변수를 선언하기 위해 let 메서드를 사용하는 것이 기대에 부합하는 것을 볼 수 있습니다.

for 루프에서 let은 변수를 다시 선언하며 JavaScript 엔진은 마지막 루프의 값을 기억하므로 i 초기화는 이전 라운드를 기반으로 계산됩니다.

for 루프에는 최소 두 가지 수준의 범위가 있음을 알 수 있습니다. 아래 예를 보면 더 쉽게 이해할 수 있습니다.


for (let i = 0; i != 3; i++) {
 let i = 'seven';
 console.log(i);
}
console.log('eight');
// 依次打印
seven
seven
seven
eight

초기값: const 선언된 변수에는 초기값이 설정되어 있어야 하며 반복해서 할당할 수 없습니다.


const c3 = 'c3';
let l3 = 'l3';
var v3 = 'v3';
 
console.log(c3, l3, v3);
// 输出 c3 l3 v3
 
c3 = 2; // Uncaught TypeError: Assignment to constant variable
l3 = 2;
v3 = 2;
 
console.log(c3, l3, v3);
// 输出 c3 2 2
 
const c32;
// 报错
// Uncaught SyntaxError: Missing initializer in const declaration

중복 정의: const 및 let은 반복 정의를 지원하지 않습니다

const 및 변수의 범위를 줄이고 변수 오염을 완벽하게 방지합니다. 약한 유형의 JavaScript의 경우 const 고정 변수(예: 고정 변수 유형)가 크게 발생할 수 있습니다. 향상된 성능. 애플리케이션에서 변수를 선언하려면 const 및 let을 사용하는 것이 좋습니다.

위 내용은 JavaScript의 새로운 const, let 및 var 명령의 비교 및 ​​사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.