on
[JS] let, const, var
[JS] let, const, var
자바스크립트에서 변수 선언 시 let, const, var를 쓸 수 있다.
하지만 여기서 var같은 경우는 현재 쓰지 않는다고 들었다.
그 이유를 알아보니 다음과 같다.
for(var i = 0; i < 5; i++) { console.log(i)//0,1,2,3,4 } console.log(i)// 5 위 경우를 보면 var는 스코프 범위를 무시한다. 만약 var가 아니고 let였다면 for문 밖에서 콘솔로그는 실행되지 않았을 것이다. 단, var는 블럭스코프를 무시하지만 function scope와 그리고 화살표함수의 블럭스코프를 무시하지 않는다. **var보다 let을 사용해야하는 이유? var의 경우 재선언이 가능하나 let은 재선언이 불가능하다. var name = 'jay' var name = 'minhee' 이러한 경우 개발자가 원하는 결과가 출력이 되지 않을 수 있고, 오류가 발생한다면 문제를 해결하기가 쉽지 않아질 것이다. 상수 값을 이용하고자 할때는 const를 사용한다.
위와 같은 이유로 var를 쓰는 건 지양하고 있고 let , const 를 쓰고 있다.
특히 변수의 값이 달라지는 경우가 없다면 const를 써서 side effect가 발생하는 걸 방지해야한다.
let, var, const 키워드 비교
let const var 유효범위 블록스코프 및 함수스코프 블록스코프 및 함수스코프 함수 스코프 값 재할당 가능 불가능 가능 재선언 불가능 불가능 가능
변수 선언 시 주의사항
- 전역변수(어디서든 접근이 가능)을 많이 선언하면 sdie effect가 발생할 수 있으므로 의도와 다른 결과값을 출력할 수 있다.
- 선언키워드 없이 절대로 변수를 할당하지 말것. 선언키워드가 없으면 전역변수의 특징을 가지게 되어 var와 동일한 효과를 낸다.
- JS의 제일 맨 위에 'use strict'을 선언하여 strict mode로 안전하게 코드를 작성한다.
공부를 하다가 헤깔리는 부분이 있어서 정리를 해봤다.
let x = 10; function outer () { let x = 20; function inner () { x = x + 10; return x; } inner(); } outer(); let result = x; //10 outer를 실행시키는 순간 outer안에 있는 inner가 실행된다. inner가 실행되면 x+=10 이 되면서 outer의 x 값이 30으로 변한다.하지만 그 후 outer 안에 있는 x를 return 하지 않아 result에 영향을 주지 않는다. 그러므로 결과는 10 이다. let x = 10; function outer () { x = 20; function inner () { let x x = x + 20; return x; } inner(); } outer(); let result = x;// 20 전역변수 outer안에 있는 x에 영향을 받아 20이 출력된다. outer안에 있는 inner가 실행되면 let x의 경우 할당받은 값이 없어 x+20으로 함수가 실행된다. 이 경우 NaN이 출력된다.
from http://codingbucks.tistory.com/44 by ccl(A) rewrite - 2021-10-23 01:02:00