구문이 지정되지 않았지만 허용되지 않았기 때문에 자바스크립트 엔진 제작자는 엔진에서 해당 구문에 대한 자체 의미를 자유롭게 정의할 수 있었다. 당연히 이것은 다른 엔진이 다른 일을 하기 때문에 문제를 야기했다. 이전의 simple 함수는 특별히 번거롭지는 않았지만 다음 코드를 살펴보자.
function branching(num) {
console.log(num);
if (num < 0.5) {
function doSomething() {
console.log("true");
}
} else {
function doSomething() {
console.log("false");
}
}
doSomething();
}
branching(Math.random());
ES5 세계에서는 이를 처리하는 데 최소한 세 가지 방법이 있다.
첫 번째이자 가장 확실한 옵션은 구문 오류로 만드는 것이다.