현재까지 자바스크립트로 개발을 하면서 변수를 지정함에 있어서, "var"를 주로 써왔다.


이번에 개발하는 페이지에서 스크립트에 대한 내용을 구글링 하는 도중에 var 변수만 사용하다보면 잘못된 문법을 그냥 사용하거나, 잘못된 값을 참조하는 불상사가 발생할수 있다는 글을 보고, let 과 const를 알게 되었다.


letconstES2015에서 새롭게 추가되었다고 한다. (현재는 ES2016이 가장 최신이다)


실제로 코드상에서 아래와 같이 사용하여도 에러가 나지 않는다.

abc = "hello!";
var abc;

//다시 재선언도 가능하다
var abc = "123";

 이 부분은 abc라는 변수가 글로벌 변수화 되어서 에러가 나지 않기 때문이라 한다.(호이스팅,hoisting)

 var"function-scope"이기 때문인 것 같다.

함수도 선언이 되면 어느 위치에서든지 불러서 사용할 수가 있지 않은가!!!


따라서, 개발 도중에 var를 깜박하고 사용하다가 보면 자칫잘못하면 다른 위치에서 같은 함수명을 사용하게 되면 혼동이 되고, 값도 잘못 사용할 수가 있다.

스크립트만의 특이한 점인것 같다.


그럼 let const "blcok-scope"이다.

코드를 보면 더욱 이해가 쉽다.

let abc = "test";
abc = 1234; //값의 재할당 가능
let abc = "test222" // 동일한 변수명으로 재선언이 불가능하다 (문법에러가 발생한다, Identifier 'abc' has already been declared)

위와 같이 변수값에 대한 재선언이 불가능하며, 선언이 된 block을 벗어나게 되면 사용할수가 없다.



const는 다른 언어를 하면 아주 익숙한 단어... 역시나 상수값 선언이였다.

const abc = "test";
abc = 1234; //상수값이므로 재할당 불가능하다는 에러 발생 (문법에러)
const abc = "test222" // 마찬가지로 상수값 변수라서 불가능하다는 에러 발생 (타입에러)

 상수값이므로 당연히 재선언, 재할당 모두 불가능하다.


이러한 값들을 이용하여 코드를 구성하다보니 보다 가독성이 좋아졌다. 느낌인가?


ES2016에서 추가된 기능들을 좀더 공부하여 정리하고 사용해야겠다.

+ Recent posts