종우의 컴퓨터 공간
변수 선언 방식(var, let, const) & 스코프 본문
자바 스크립트 (JavaScript)/JavaScript Language Fundamentals
변수 선언 방식(var, let, const) & 스코프
종우공간 2021. 7. 23. 03:27var
- ES6 이후부터 사용하지 않는다.
let(변수)
- 재할당(reassign)이 가능하다.
- block level scope를 가진다.
const(상수)
- 재할당(reassign)이 불가능하다.
- 처음 선언할 때 반드시 초기화(값 할당)을 해주어야 한다.
- block level scope를 가진다.
- 객체같은 경우에는 그 안의 필드의 값을 변경할 수는 있지만 그 객체 자체를 다른 객체로 변경할 수는 없다.
- 배열같은 경우에도 그 안의 값에 추가를 하거나 삭제를 하는 등 변경은 가능 하지만 그 배열 자체를 다른 배열로 변경할 수는 없다.
const person = {
name: 'Jongwoo',
age: 29
}
person.name = 'James';
console.log(person); // name이 James로 바껴서 출력된다.
person = { //ERROR
email: 'limjongwoo1994@gmail.com',
age: 29
}
const number = [1, 2, 3, 4, 5]
number.push(6);
console.log(number); // prints out [1, 2, 3, 4, 5, 6]
number = [1, 2, 3, 4, 5, 6]; //ERROR
Scope
// Global Variables
var a = 1;
let b = 2;
const c = 3;
// Function Scope
function test() {
var a = 4;
let b = 5;
const c = 6;
console.log('Function Scope: ', a, b, c); //yields 'Function Scope: 4 5 6
}
test();
console.log('Global Scope: ', a, b, c); //yields 'Global Scope: 1 2 3
// Block Scope
if(true) {
var a = 4;
let b = 5;
const c = 6;
console.log('If Scope: ', a, b, c); //yields 'If Scope: 4 5 6
}
console.log('Global Scope: ', a, b, c); //yields 'Global Scope: 4 2 3
for(let b = 0; b < 10; b++) {
console.log(`Loop: ${b}`);
}
console.log('Global Scope: ', a, b, c); //yields 'Global Scope: 4 2 3
for (var a = 0; a < 10; a++) {
console.log(`Loop: ${a}`);
}
console.log('Global Scope: ', a, b, c); //yields 'Global Scope: 10 2 3
- var은 function scope을 가지기 때문에, block level에서는 global variable에 영향을 준다.
- let과 const는 block scope을 가지기 때문에, global variable에 영향을 주지 않는다.
결론
- 변수 자체가 변경 될 필요가 없다고 생각이 들면 const를 최우선적으로 사용하여 코드의 가독성을 높힌다.
- let은 변수 값을 재할당할 필요가 있을 때에만 사용한다.
- var이라는 선언방식도 있지만 ES6 이후부터는 사용하지않는다.
'자바 스크립트 (JavaScript) > JavaScript Language Fundamentals' 카테고리의 다른 글
템플릿 문자열(Template Literals) (0) | 2021.07.24 |
---|---|
String Methods (0) | 2021.07.24 |
The Math Object (0) | 2021.07.24 |
형 변환(Type Conversion) (0) | 2021.07.24 |
데이터 타입(data types) (0) | 2021.07.23 |