2014-12-28 5 views
2

이 코드 :"왜"es6 하모니는 use strict로만 작동합니까?

var x = 8, 
    y = 12; 

let (x = 5, y = 10) { 
    return x + y; 
} 

..gives "구문 에러 : 불법하자 선언 외부 확장 모드"

그러나와 잘 작동 "엄격한 사용". 첫 번째 모드를 "엄격한 사용"과 통합 '하자'왜

은 그래서 흥미 롭군요? (http://kangax.github.io/compat-table/es6/#nodeharmony에 따라)

+1

? 그리고/또는 어떤 노드 버전? FF (야간) – loganfsmyth

+0

작품 – kangax

+0

@loganfsmyth 노드 v0.11.14에서 나를 위해 – ButuzGOL

답변

6

let은 (는) ES3 시대의 JavaScript에서 예약어가 아닙니다. 예를 들어, 당신이 할 수 있습니다 : 변수를 선언 할

var let = 5; 

let을했다. ES5 스펙은 미래 지향적 인 것으로 엄격한 모드 기능으로 예약 된 키워드를 사용했습니다. 그래서 ES6 세계에서, 그들은 키워드로 let을 구문 분석 할 수 있지만 엄격한 용기 내부. 엄격한 컨테이너 외부에서는 하위 호환성 때문에 let이 키워드가 아닌 식별자로 처리되어야합니다.

당신이 transpile을 사용하고있는