두 번째 옵션은 다음과 같이 선언이 실제로 함수 표현식인 것처럼 처리하는 것이다.
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());