The Web Developer 부트캠프 2022
JS BLOCK, var, lexical scope, 함수를 변수로
거위발바닥
2022. 9. 19. 17:52
BLOCK
let radius = 8;
if (radius > 0) {
const PI = 3.14;
let msg = 'HI!'
}
해당코드를 입력하고 console.log(radius)를 입력하면 8이 나오지만 console.log(PI)나 msg를 입력하면 나오지 않는다.
그 이유는 BLOCK 때문인데 { } 안의 대괄호는 전부 BLOCK이다. 함수대신 대괄호의 블록이 들어간다고 생각하면 된다.
let radius = 8;
if (radius > 0) {
var PI = 3.14;
var msg = 'HI!'
}
하지만 위처럼 const 나 let이 아닌 var를 사용한다면 block 밖에서도 해당 변수를 입력하기 때문에
console.log(PI)나 msg를 입력하면 3.14와 HI!가 나온다.
lexical scope
function bankRobbery() {
const heroes = ['Spiderman', 'Wolverine']
function cryForHelp() {
for (let hero of heroes) {
console.log(`HELP US, ${hero.toUpperCase()}`);
}
}
cryForHelp();
}
위와 같은 코드를 사용해 bankRobbery() 함수를 실행하면
HELP US, SPIDERMAN
HELP US, WOLVERINE
HELP US, WOLVERINE
가 잘나온다. const heroes가 cryForHelp 함수 밖에 있는데도 저 변수를 인식하는 이유는 부모 함수안에 있는
변수이기 때문인데, 이것을 lexical scope 라고 부른다.