728x90
반응형
var
var name = 'nime';
console.log(name);
자바스크립트에서 변수를 선언할 때 사용하는 방법 중 하나이다.
var를 사용했을 때 발생하는 문제점
var num = 10;
if (num == 10) {
var num = 20;
console.log("num in if : ", num); // num in if : 20
}
console.log(num); // 20
하지만 var를 사용하여 변수를 선언해주면 위 코드처럼
if문 안에서 변경이 된 게 밖에서도 영향을 미친다.
ES6부터는 구분하기 위해 scope라는 개념이 추가된 let이 등장하게 된다.
📌 scope(유효범위)란?
변수에 접근할 수 있는 범위이다.
전역 스코프는 전역에 선역되어있는 어느 곳이든 해당 변수에 접근 가능하다.
지역 스코프는 해당 지역에서만 접근할 수 있어 지역을 벗어나면 접근할 수 없다.
let
let num = 10;
if (num == 10) {
let num = 20;
console.log("num in if : ", num); // num in if : 20
}
console.log(num); // 10
let은 var와 달리 if문 안에서 변경이 되었어도 밖에 영향을 못미친다.
const
const PI = 3.1415;
PI = 3.141592; // Uncaught TypeError: Assignment to constant variable.
const는 변하지 않는 값을 사용할 때 쓴다.
즉, 상수라고 할 수 있다.
한 번 변수에 값을 할당하고 나면 수정할때 에러가 발생한다.
정리
var | let | const | |
재선언 | ⭕ | ❌ | ❌ |
재활당 | ⭕ | ⭕ | ❌ |
호이스팅
호이스팅은 코드를 싱행하기 전에 변수선업과 함수선을 해당 스코프의 최상단으로 끌어 올려진 것을 말한다.
자바스크립트의 모든 선언에는 호이스팅이 일어난다.
하지만 호이스팅을 사용했을 때 var 변수가 영향을 많이 받아 가끔 오류가 발생하기 시작했다.
그래서 최대한 let과 const를 사용을 권장한다.
728x90
반응형
'Language > JavaScript' 카테고리의 다른 글
[JS] 배열에 사용할 수 있는 메소드 모음 - forEach, every, some (0) | 2022.10.10 |
---|---|
[JS] == vs. === JavaScript 개발자라면 알아야 하는 개념 (0) | 2022.10.07 |
[JS] 자네, 두 Array를 비교하고 싶지 않은가? feat.객체 비교하는 법 (0) | 2022.10.06 |
[JS] forEach에서 비동기 함수 사용 금지! (0) | 2022.09.29 |
[JS/문법] 비구조화 할당(구조분해) (0) | 2022.08.01 |
댓글