더북(TheBook)

이는 항상 false로 기록된다(동일한 범위에서 반복된 선언이 있는 경우(이것은 허용되어 있다) 마지막 선언이 승리하기 때문이다). 아마도 개발자가 의도한 것이 아닐 수 있지만(이 특정 경우), 단계별 코드의 일부로 처리되기보다는 함수 선언이 호이스트된다고 보는 것이 사실에 더 가깝다.

그렇다면 자바스크립트 엔진 제작자는 무엇을 했을까?

세 개 모두 했다.

일부 엔진(간단한 예외를 제외하고 대부분 사소한 엔진)은 옵션 1, 다른 엔진은 옵션 2, 다른 엔진은 옵션 3을 사용했다.

TC39가 블록의 함수 선언에 대한 의미를 정의하려고 했을 때, 이 세상의 중요한 코드를 무효화하지 않고 합리적이고 일관된 것을 지정하는 매우 어려운 작업을 수행했다. 그래서 TC39는 다음 두 가지를 했다.

ES2015의 나머지 부분과 일치하는 표준 의미를 정의했다.

그들은 웹 브라우저의 느슨한 모드 코드에 대해서만 “레거시 웹 의미론”을 정의했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.