'var'와 'let'의 차이점은 무엇입니까?
범위 지정:
주요 차이점은 범위 지정 규칙입니다. var 키워드로 선언된 변수는 즉시 함수 본문(따라서 함수 범위)으로 범위가 지정되고 let 변수는 { }(따라서 블록 범위)로 표시된 직접 둘러싸는 블록으로 범위가 지정됩니다.
function variablesTest() {
var dav = "Dav";
let ron = "Ron";
console.log(dav, ron); // Dav Ron
{
var ilm = "Ilm"
let hub = "Hub";
console.log(ilm, hub); // Ilm Hub
}
console.log(ilm); // Ilm
console.log(hub); // ReferenceError
}
variablesTest();
let 키워드가 언어에 도입된 이유는 함수 범위가 혼란스럽고 JavaScript의 주요 버그 소스 중 하나였기 때문입니다.
게양:
var 키워드로 선언된 변수는 호이스트(코드가 실행되기 전에 undefined로 초기화됨)되는 동안 선언되기 전에도 둘러싸는 범위에서 액세스할 수 있음을 의미합니다.
function varCheck() {
console.log(name); // undefined
var name = "Davron";
console.log(name); // Davron
}
varCheck();
let 변수는 정의가 평가될 때까지 초기화되지 않습니다. 초기화 전에 액세스하면 ReferenceError가 발생합니다. 변수는 블록 시작부터 초기화가 처리될 때까지 "시간적 사각지대"(내 다음 기사의 주제가 될 것입니다)에 있다고 합니다.
function letCheck() {
console.log(name); // ReferenceError
let name = "Davron";
console.log(name); // Davron
}
letCheck();
전역 개체 속성:
최상위 수준에서 let은 var와 달리 전역 객체에 속성을 생성하지 않습니다.
var x = 'global'; // globally scoped
let y = 'global'; // not allowed to be globally scoped
console.log(this.x); // "global"
console.log(this.y); // undefined
재선언:
엄격 모드에서 var를 사용하면 동일한 범위에서 동일한 변수를 다시 선언할 수 있고 let은 SyntaxError를 발생시킵니다.
var name = "Davron"
var name = "John"
console.log(name) // 'Davron' is now replaced with 'John'
let surName = "Abdukhakimov"
let surName = "Doe" // SyntaxError Identifier 'surName' has already been declared
console.log(surName)
Reference
이 문제에 관하여('var'와 'let'의 차이점은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dawroun/what-is-the-difference-between-let-and-var--507d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)