파이썬으로 개발을 처음 공부 하신분들은 변수의 종류라 하면 자료형, 문자형 같은 타입이 먼저 생각 날 것입니다. Python에서는 별도의 형식을 지정하지 않고도 변수를 선언할 수 있습니다. 하지만 예를 들어 C
에서는 자료형이면 int
문자면 char
을 앞에 붙여줘야 선언할 수 있습니다. Javascript
는 Python
과 C
의 중간 정도의 번거러움이 있습니다. Javascript
의 변수들의 종류들에 대해 알아보겠습니다.
let
으로 선언된 변수는 해당 변수가 선언된 함수 내에서 유효합니다. let
은 es2015
에서 const
와 함께 추가되었습니다.
let num = 3;
if (num){
let num = 5;
console.log(num); // 5
}
console.log(num); // 3
const
는 값이 변하지 않는 변수를 선언하게 해줍니다. 유효한 범위는 let
과 같습니다.
var
은 가장 일반적인 변수입니다. let
과 const
가 가지고 있는 특성을 var
은 가지고 있지 않습니다. var
은 Function Scope
라는 특징을 가지고 있으며, 아래의 예시와 같이 동작합니다.
//Function Scope
var num = 3;
function setNum() {
var num = 10;
console.log(num)
}
setNum() // 10
console.log(num) // 3
//non Function Scope
var name = "jang";
if (name){
var name = "jun";
console.log(name); // jun
}
console.log(name); // jun
또한 var
을 더 잘 활용하기 위해선 Hoisting이라는 특성도 이해해야 합니다. 원래 같으면 변수를 선언하기 전에 참조하면 참조에러가 발생합니다. 하지만 Javascript
에서는 아래와 같이 돌아갑니다.
console.log(num) // undefined
var num = 4
console.log(num) // 4
이렇게 되는 이유는 var
은 Javascript 엔진
이 코드 최상위로 미리 선언됩니다. 이러한 Hoisting
을 막기 위해서는 'use strict'
를 스코프 내에서 사용해야합니다.