두 번째 옵션은 다음과 같이 선언이 실제로 함수 표현식인 것처럼 처리하는 것이다.
function branching(num) {
console.log(num);
var doSomething;
if (num < 0.5) {
doSomething = function doSomething() {
console.log("true");
};
} else {
doSomething = function doSomething() {
console.log("false");
};
}
doSomething();
}
branching(Math.random());
이는 개발자가 의도한 임의의 숫자에 따라 true 또는 false로 기록된다.
세 번째 옵션은 동일한 범위에서 여러 개의 호이스트 선언처럼 처리하는 것이다.
function branching(num) {
function doSomething() {
console.log("true");
}
function doSomething() {
console.log("false");
}
console.log(num);
if (Math.random() < 0.5) {
} else {
}
doSomething();
}
branching(Math.random());