scope, var closure 이슈, let, const
var 변수의 특징
function level scope - 함수의 코드 블록만을 스코프로 인정한다. 전역변수 외부에서 생성된 변수는 모두 전역변수이기 때문에 남용될 수 있다
var 키워드 생략 허용 - 암묵적인 전역변수가 허용된다
변수 중복 선언 허용 - 의도하지 않는 변수값의 변경이 일어날 수 있다
변수 호이스팅 - 변수를 선언하기 이전에 참조할 수 있다
→ let, const 사용
var의 closure 이슈
대부분의 언어들은 블록 레벨 스코프를 따름
function-level scope: 함수 내에서 선언된 변수는 함수 내에서만 유효하며 함수 외부에서는 참조할 수 없다. 즉 함수 내부에서 선언된 변수는 지역 변수이며, 함수 외부에서 선언한 변수는 모두 전역 변수이다. (var)
block-level scope: 모든 코드 블록(function, if, for,while, try-catch...) 내에서 선언된 변수는 코드 블록 내에서만 유효하며 코드 블록 외부에서는 참조할 수 없다. 즉 코드 블록 내부에서 선언한 변수는 지역 변수이다. (let, const)
const - 상수. 재할당 불가
const list = [’a’, ‘b’, ‘c’], list에 대해서 재할당 불가이지 list 내부 값 변경은 가능하다
immutable array 구현
Last updated