유효범위, 변수의 접근성과 생존 기간을 제어합니다.
const f1 = function(){
const a = 1; // 함수 스코프
const b = 2;
console.log(a + b) // 3
return a + b
}
let a = 20; // 전역 범위
console.log(b) // error: b is not defined - 전역에서는 함수 내부로 들어 갈 수 없어요
f1() // 3
스크립트의 어디서든 접근이 가능하기 때문에 사용이 쉽습니다.
타인과 협업, 라이브러리 사용시 충돌이 가능성이 있습니다.
함수 내부에서 정의된 변수와 매개변수는 함수 외부에서 접근할 수 없으며,
함수 내부에서 정의된 변수라면 함수의 어느 부분에서도 접근할 수 잇습니다.
const fnc = function(){
val = "hello"
let a= 1;
let b= 2;
const fnc2 = function(){
let b = 5;
let c = 6;
a = a + b + c; // 1 + 5 + 6
console.log(a) // 1
}
fnc2() // 12
}
fnc();
console.log(val) // "hello" 전역변수 취급됩니다. ... 'use strict'
중괄호 안에서만 접근이 가능합니다. 블록 내부에 정의된 변수는 블록의 실행이 끝나면 해제됩니다.
if(true){
var value = "hello"
}
console.log(value) // "hello"
if(true){
let value = "world" // let, const 중괄호 안에서만 유효 범위를 갖는다
}
console.log(value) // "hello"