변수
변수를 선언하는 방법 3가지
var name1 = 'kim';
let name2 = 'kim';
const name3 = 'kim';
var
var은 재선언, 재할당이 가능하고 함수의 범위를 갖는다.
var name = 'kim'
var name = 'lee' // error X
반면에 let 과 const는 재선언이 불가능다.
let name1 = 'kim'
let name1 = 'lee' // error
const name2 = 'kim'
const name2 = 'lee' // error
또 let은 재할당이 가능하지만 const는 불가능하다.
let name1 = 'kim'
name1 = 'lee' // error X
const name2 = 'kim'
name2 = 'lee' // error
const 에서
const people = {name: 'kim'}
people.name = 'lee'
이런식으로 상수 oject 내부의 값은 재할당이 아니다. 그러므로 error가 아님.
그러면 변경 불가능한 object를 만들고 싶다면? freeze 이용
'use strict' // 이것이 있으면 error, 아니면 error 아님.
const people = {name: 'kim'}
Object.freeze(people);
people.name = 'lee' // 값이 바뀌지 않는다.
변수의 범위
변수는 존재 범위가 있다.
var
function myfunction() {
var name = 'kim'
name; // 사용가능
}
console.log(name) // 사용불가
var은 function안에서만 사용이 가능하다.
let, const
if(true){
let name = 'kim'
const address = 'suwon'
}
let과 const는 { } 안에서만 사용이 가능하다.