변수

변수를 선언하는 방법 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는 { } 안에서만 사용이 가능하다.