March 01, 2021
let nickname : let이라는 키워드로 nickname이라는 변수를 정의하면 메모리를 가리킬 수 있는 포인터가 생성되고 nickname 변수에 Jessie 라는 값을 할당하면 메모리에 Jessie가 저장되는 것이다.
추후에 nickname 변수에 Justin 이라는 값을 다시 할당할 수 있다. 그러면 메모리에 Justin 값이 저장된다.
Block Scope
{
let nickname = 'Jessie';
console.log(nickname); // Jessie
nickname = 'Justin';
console.log(nickname); // Justin
}
console.log(nickname); // Uncaught ReferenceError: nickname is not definedFunction Scope
{
var locate = 'Suji';
console.log(locate); // Suji
}
console.log(locate); // Sujifunction foo() {
var company = 'MAXST';
console.log(company); // MAXST
}
console.log(company); // VM1669:7 Uncaught ReferenceError: company is not definedhoisting
console.log(age); // undefined
age = 3;
var age;위의 코드는 아래의 코드와 동일한 코드라고 보면 된다.
var age;
console.log(age); // undefined
age = 3;const 는 메모리를 가리키고 있는 포인터가 잠겨있다. 그래서 값을 선언함과 동시에 할당해야 하고 그 뒤로는 절대 다시는 값을 변경할 수 없다.
primitive type : 더 이상 작은 걸로 나눠질 수 없는 single item
const로 object 를 선언하는 경우, 한 번 할당된 object는 다른 object로 변경이 불가하지만 object내 속성값은 변경이 가능하다.
const ellie = {
name: 'ellie',
age: 20,
};
ellie = { name: 'Jessie', age: 25 }; // Uncaught TypeError: Assignment to constant variable.
ellie.name = 'Jessie'; // 가능
console.log(ellie); // { name: 'Jessie', age: 20 }