number / boolean / null / string / undefined
array(배열) / object(객체) / function
scope : 변수 접근 규칙에 따른 유효 범위 - 변수와 그 값이 어디서부터 어디까지 유효한지를 판단
ex) 함수 내 : local scope(지역 변수) / 함수 밖 : global scope(전역 변수)
local에서 global은 참조 불가능, but global은 하위 local 참조가능
자연스럽게 local scope 는 global scope 보다 우선순위를 갖게 된다.
var : function scope 사용 - { } 밖의 함수 내 모든 변수 참조
let : block scope 사용 - { } 내
const : block scope 사용, but let 과 다르게 재정의 불가능 (ex: let a = a; → a = b → 'a 입력시 b 로 재정의), but const 는 이미 정의된 변수는 바꿀 수 없다.
전역변수(global scope)를 대표하는 객체 window
var 로 선언된 변수는 window 객체와 연결됨
var 키워드는 함수 스코프의 유효범위를 가진다
var로 변수를 정의하면 함수 이외의 조건문이나 반복문 모두 전역변수로 선언됨!
외부함수의 변수에 접근할 수 있는 내부함수 aka 함수와 함수가 선언된 어휘적(lexical) 환경의 조합
역할;
- function factory
- name spacing 을 해결