>  기사  >  웹 프론트엔드  >  JavaScript에서 var, let 및 const의 차이점은 무엇입니까?

JavaScript에서 var, let 및 const의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2020-11-13 10:54:4916215검색

차이점: 1. var로 선언된 변수는 함수 범위에 속하지만, let과 const로 선언된 변수는 블록 수준 범위에 속합니다. 2. 변수 승격은 var에 있지만 let과 const에는 없습니다. 반복적으로 선언되지만, 동일한 블록 수준 범위에서는 let 변수를 다시 선언할 수 없으며 const 변수를 수정할 수 없습니다.

JavaScript에서 var, let 및 const의 차이점은 무엇입니까?

추천 튜토리얼: "JavaScript 비디오 튜토리얼"

ES6(ES2015)이 등장하기 전에는 JavaScript에서 변수를 선언하는 유일한 방법은 var 키워드를 통해서였고 함수를 선언하는 방법은 function 키워드를 통해서였습니다. ES6 이후에는 선언 방식에 var, let, const, function, class가 포함됩니다. 이 글에서는 주로 var, let, const 간의 차이점을 설명합니다.

var 이해하기

var 키워드를 사용하여 변수를 선언하면 해당 변수는 현재 함수 범위에 속합니다. 선언이 함수 외부에서 발생하는 최상위 선언인 경우 변수는 전역에 속합니다. 범위. 예:

var a = 1; //此处声明的变量a为全局变量
function foo(){
   var a = 2;//此处声明的变量a为函数foo的局部变量
   console.log(a);//2
}
foo();
console.log(a);//1

변수 선언 시 var를 생략하면 해당 변수는 전역 변수가 됩니다. 변수가 전역 범위에 있으면 해당 값이 업데이트됩니다. 예:

var a = 1; //此处声明的变量a为全局变量
function foo(){
   a = 2;//此处的变量a也是全局变量
   console.log(a);//2
}
foo();
console.log(a);//2

참고: var로 선언된 변수는 호이스팅 대상입니다.

"호이스팅" 이해

호이스팅은 var가 범위 내 어디에 나타나든 이 선언이 전체 현재 범위에 속하며 어디에서나 액세스할 수 있음을 의미합니다. 변수에 대한 할당이 아니라 변수 선언만 승격됩니다. 다음 예에서 볼 수 있듯이

console.log(a);//undefined
var a = 1;

이 코드 세그먼트는 다음 코드 세그먼트와 동일한 논리를 갖습니다.

var a;
console.log(a);//undefined
a = 1;

그리고 선언되지 않은 변수에 대해 작업을 수행하면 오류가 보고됩니다.

console.log(b);//假设b未声明过,Uncaught ReferenceError: b is not defined

let으로 선언된 변수 이해하기

let 은 다음과 같은 특성을 갖습니다.

  • let 으로 선언된 변수는 블록 범위의 특성을 갖습니다.

  • 동일한 블록 수준 범위에서는 변수를 반복해서 선언할 수 없습니다.

  • let으로 선언된 변수에 대한 변수 승격이 없습니다. 즉, let 선언에 임시 데드존(TDZ)이 있습니다.

다음 예에서 볼 수 있듯이

let a = 1;
console.log(a);//1
console.log(b);//Uncaught ReferenceError: b is not defined
let b = 2;
function foo(){
    let a = 1;
    let a = 2;//Uncaught SyntaxError: Identifier 'a' has already been declared
}

다음은 var 및 let의 전형적인 예입니다.

for (var i = 0; i < 10; i++) {
    setTimeout(function(){
        console.log(i);
    },100)
};

코드가 실행된 후 콘솔에 10개의 10이 인쇄됩니다.

for (let i = 0; i < 10; i++) {
    setTimeout(function(){
        console.log(i);
    },100)
};

After. 코드가 실행되면 콘솔에 0~9가 출력됩니다.

const

const 선언 방법을 이해하세요. 위의 let 특성 외에도 const로 정의된 변수라는 특성도 있습니다. , 일단 정의되면 수정할 수 없습니다. 즉, const 선언은 상수입니다.

예:

const a = 1;
console.log(a);//1
a = 2;
console.log(a);//Uncaught TypeError: Assignment to constant variable.

그러나 이는 const 선언 변수의 내부 내용이 다음과 같이 변경 불가능하다는 의미는 아닙니다.

const obj = {a:1,b:2};
console.log(obj.a);//1
obj.a = 3;
console.log(obj.a);//3

정확하게 말하면 const 선언은 값에 대한 읽기 전용 참조를 생성합니다. 그러나 이것이 보유하는 값이 불변이라는 의미는 아니며, 단지 변수 식별자를 재할당할 수 없다는 의미입니다.

차이점 요약

  • var로 선언된 변수는 함수 범위에 속하고, let과 const로 선언된 변수는 블록 수준 범위에 속합니다.

  • var에는 변수 승격 현상이 있지만 let과 const는 그렇지 않습니다. 이런 현상이 있습니다.

  • var 변수는 반복해서 선언할 수 있지만, 동일한 블록 수준 범위에서는 let 변수를 다시 선언할 수 없고 const 변수를 수정할 수 없습니다.

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 교육을 방문하세요! !

위 내용은 JavaScript에서 var, let 및 const의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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