프로그래밍 (Programming)/자바스크립트 (JavaScript)
[javascipt] var, let, const (자바스크립트, 변수, 스코프, scope)
Bbaktaeho
2020. 3. 28. 13:45
반응형
📚 var, let, const
- 자바스크립트 문법에서 변수를 선언할 때 사용하는 키워드
- es6에서 추가된 let, const
- 스코프(scope)란 유효 범위의 영역을 뜻함 즉, 중괄호 속의 영역
📗 var
함수의 스코프에서만 유효
-
var 키워드를 반복문 스코프에서 선언할 때
반복문 영역에서 유효하지 않고 마치 전역 변수처럼 동작한다for (var i=0; i<10; i++); console.log(i);
10
-
var 키워드를 조건문 스코프에서 선언할 때
반복문과 마찬가지로 조건문 영역에서 전역 변수처럼 동작한다if(true){ var test = '테스트입니다.'; console.log(test); // 1 } console.log(test); // 2
테스트입니다. // 1 테스트입니다. // 2
-
var 키워드를 함수 스코프에서 선언할 때
함수 내에서 선언된 var 변수는 함수 스코프에서만 유효하다function test() { var test1 = '테스트'; var test2 = '입니다.' return test1 + test2; } console.log(test1); // ReferenceError: test1 is not defined (주석 후 실행) console.log(test2); // ReferenceError: test2 is not defined (주석 후 실행) console.log(test());
테스트입니다.
📒 let
모든 중괄호에서 스코프를 가지게 하는 키워드
-
let 키워드를 반복문과 조건문에서 선언할 때
var 키워드와 다르게 모든 영역에서 유효하다for(let i=0; i<5; i++){ console.log('for문에서 선언한 i : ',+i); } if (true){ let i = 'if문에서 선언한 i'; console.log(i); } console.log(i);
for문에서 선언한 i : 0 for문에서 선언한 i : 1 for문에서 선언한 i : 2 for문에서 선언한 i : 3 for문에서 선언한 i : 4 if문에서 선언한 i // error console.log(i); ^ ReferenceError: i is not defined
-
let 키워드를 함수에서 사용할 때
var 키워드와 같은 동작을 한다
📘 const
상수로 만들어주는 키워드
-
let 키워드와 같은 스코프 개념을 가짐
-
배열 혹은 객체에서 요소를 추가, 변경, 제거 동작은 가능함
-
재할당을 할 수 없는 키워드
-
const 키워드를 초기화 없이 사용할 때
예외가 발생한다const test; console.log(test);
const test; ^^^^ SyntaxError: Missing initializer in const declaration
-
const 키워드를 배열 또는 객체로 사용할 때
초기 할당이 되어있다면 추가, 삭제, 변경이 가능하다const arr = [1,2,3,4,5]; console.log(arr); // 추가 가능 arr.push(6); console.log(arr); arr.pop(); arr.pop(); console.log(arr);
[ 1, 2, 3, 4, 5 ] [ 1, 2, 3, 4, 5, 6 ] [ 1, 2, 3, 4 ]
-
const 키워드로 선언된 변수를 재할당 할 때
예외가 발생한다const arr = [1,2,3,4,5]; arr = [1,2,3];
arr = [1,2,3]; ^ TypeError: Assignment to constant variable.
반응형