var name = 'kim';
변수는 자료의 정보를 임시로 저장하는 공간이다.
var name;
let age;
const gender;
이렇게 var, let, const 키워드를 이용해 변수를 만들겠다고 선언할 수 있다. var키워드는 재선언이 가능하고, let, const는 재선언이 불가능하다. 이는 추후 변수 이름을 실수로 중복해서 만드는 실수를 방지해주는 고마운 기능이다.
var name;
name = 'Kim';
이렇게 선언 후 할당할 수 있고,
var name;
name = 'Kim';
할당과 선언을 동시에 할 수도 있다.
let name = 'park';
name = 'Kim';//가능
const gender = 'famale';
gender = 'male';//에러
그런데 변수를 var,let으로 만들면 재할당이 가능하고 const로 만들면 재할당이 불가능하다. const로 변수를 만들면 나중에 등호를 이용해 값을 변경하는게 불가능하다는 의미이다.
const obj = {name : 'Kim'}
obj.name = 'park';//가능
const변수에 오브젝트를 담으면 오브젝트 내의 데이터는 변경이 가능하다. 엄밀히 말하면 변수를 재할당한 것이 아니기 때문이다. 불변의 오브젝트를 만들고 싶다면 Object.freeze()라는 자바스크립트 기본함수를 이용하면 된다.
function sayHi(){
var name = "Kim";
console.log(name + " " +'hi');//가능
}
console.log (name);//에러
if (1 == 1){
let name = 'Kim';
console.log(name);//가능
}
console.log(name);//에러
- var 변수는 function 내에서 만들면 function 내에서만 쓸 수 있다. function 밖에서 부르면 없다고 나온다.(함수스코프, 전역스코프)
- 위의 예제처럼 let 변수는 {}중괄호 안에서만 쓸 수 있다. const도 동일하다. (블록스코프)
더 많은 변수 관련 사항은 모던 자바스크립트 튜토리얼을 참고하자.