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 defined
Function Scope
{
var locate = 'Suji';
console.log(locate); // Suji
}
console.log(locate); // Suji
function foo() {
var company = 'MAXST';
console.log(company); // MAXST
}
console.log(company); // VM1669:7 Uncaught ReferenceError: company is not defined
hoisting
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 }