2017-10-15 3 views
-3

예약 키워드로 constlet을 모두 찾을 것으로 예상됩니다.왜 'let'이 예약어로 지정되지 않았습니다

Keyword:: 
    await 
    break 
    case catch class const continue <---- `const` here 
    debugger default delete do 
    else export extends 
    finally for function 
    if import in instanceof 
    new 
    return 
    superswitch 
    this throw try typeof 
    var void 
    while with 
    yield 

let 키워드입니다 : I've found onlyconst는 있지만 let 없다? 그리고 그렇지 않다면, 왜?

+1

노치를 내려다 보면 "let 및 static은 정적 의미 제한 (12.1.1, 13.3.1.1, 13.7.5.1 및 14.5.1 참고)을 통해 예약어로 처리됩니다. 어휘 문법보다. " – BoltClock

+0

'let'의 상태를 설명하는 메모가 있습니다. – pvg

답변

4

가이 같은 이전 버전과의 호환성을 위해 예약 된 단어의 다른 부분과 동일하게 취급 할 수 없도록 let는, ES6ES5 strict mode 전에 예약하지 않은 :

var let = 5; 

당신에게 ' 새로운 구조 (예 : let let = 5;는 유효하지 않음)에 대한 스펙에서 많은 예외가 있습니다.

+0

키워드 프로덕션에 포함시키지 않은 이유를 설명해 주셔서 감사합니다. –

1

당신은 referenced document에 메모를 볼 수 있습니다 : 어떤 상황에서

항복과 식별자의 의미를 부여 기다리고 있습니다. 12.1.1을 참조하십시오. 엄격 모드 코드에서 은 어휘 문법보다는 정적 의미 제한 (12.1.1, 13.3.1.1, 13.7.5.1 및 14.5.1 참조)을 통해 및 정적을 예약어로 취급합니다.

관련 문제