코드 3-4 블록 내 함수 선언: 엄격 모드–func-decl-block-strict.js
"use strict";
function branching(num) {
let f;
console.log(num);
if (num < 0.5) {
console.log("true branch, typeof doSomething = " + typeof doSomething);
f = doSomething;
function doSomething() {
console.log("true");
}
} else {
console.log("false branch, typeof doSomething = " + typeof doSomething);
f = doSomething;
function doSomething() {
console.log("false");
}
}
f();
}
branching(Math.random());
이제 실행하면 f는 한 함수 또는 다른 함수를 참조하고 true 또는 false를 기록한다. 호이스팅 때문에 doSomething은 해당 할당이 선언 위에 있더라도 f에 할당될 때 함수를 참조한다.