Javascript의 Var, let 및 const
var 키워드:
var 키워드를 사용하여 변수를 선언하면 함수 범위 또는 전역 범위가 될 수 있습니다. 함수 외부에서 var를 선언하면 전역 범위가 지정되고 코드의 어디에서나 액세스할 수 있습니다. var가 함수 내에서 선언되면 함수 범위입니다.
var a = 2; //varable declared gloabally
function localScope() {
var b = 5;
console.log(a); // output 2
console.log(b); // output 5
}
localScope();
console.log(a); // output 2
console.log(b); // ReferenceError : b is not defined
위의 코드 스니펫에서 localScope 함수 내에서 'a'에 액세스할 때 제대로 작동합니다. 여기서 'a'는 전역 범위로 선언됩니다. 그러나 localScope 함수 외부에서 'b'에 액세스하면 변수 b가 함수 내부에서 로컬로 선언되기 때문에 오류가 발생합니다.
var로 선언된 변수에 새로운 값을 재할당하거나 재선언할 수도 있습니다. 변수는 마지막으로 할당된 값을 보유하며 두 경우 모두 잘 작동합니다.
var a = 2;
a = 2; // reinitiated with some other value
console.log(a) // output 2
var a = 20; // redeclared
console.log(a); // output 20
변수가 시작되기 전에도 변수를 사용할 수 있습니다. 이렇게 하면 변수가 "정의되지 않음"으로 표시됩니다. 이는 곧 다룰 자바스크립트의 호이스팅 때문입니다.
console.log(a) //undefined
var a=100;
let 키워드 :
let 키워드는 블록 범위이므로 let으로 선언된 변수는 초기화된 블록에서만 액세스할 수 있습니다. 블록 외부에서 액세스하려고 하면 오류가 발생합니다.
{
let a = 10;
}
console.log(a); // ReferenceError : a not defined
let을 사용하여 선언된 변수에 대한 값을 다시 초기화할 수 있지만 다시 선언할 수는 없습니다. 변수가 선언되기 전에 사용하면 오류가 발생하고 var의 경우 '정의되지 않음'이라고 표시됩니다.
let a = 10; // declared
a = 20; // reinitialized works fine
let a = 30; // SyntaxError: Identifier 'a' has already been declared
const 키워드 :
이름에서 알 수 있듯이 const는 const 변수에 할당된 값을 변경할 수 없습니다. 값이 변수로 초기화되면 다시 선언하거나 다시 초기화할 수 없습니다. 'let'을 사용하여 선언된 변수는 블록 범위이며 변수는 선언 전에 사용할 수 없습니다.
const x = 10;
x = 20 // TypeError : Assigning to a constant variable.
객체의 경우 할당된 객체에 속성을 추가할 수 있지만 객체 전체를 변경할 수는 없습니다. 배열의 경우에도 마찬가지입니다. 기존 배열에 값을 추가할 수 있지만 새 배열을 동일한 변수에 할당할 수는 없습니다.
const details = {
name: "Naveen",
age : 21,
};
console.log(details) // { name: 'Naveen', age: 21 }
details = {
name: "Srinath",
}; // TypeError: Assignment to constant variable.
// correct syntax
details.age = 21;
console.log(details);
Reference
이 문제에 관하여(Javascript의 Var, let 및 const), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/naveeneggadi/hoisting-in-javascript-32mj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)