구문이 지정되지 않았지만 허용되지 않았기 때문에 자바스크립트 엔진 제작자는 엔진에서 해당 구문에 대한 자체 의미를 자유롭게 정의할 수 있었다. 당연히 이것은 다른 엔진이 다른 일을 하기 때문에 문제를 야기했다. 이전의 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 세계에서는 이를 처리하는 데 최소한 세 가지 방법이 있다.
첫 번째이자 가장 확실한 옵션은 구문 오류로 만드는 것이다.