为什么`let`未在规范中指定为保留关键字

时间:2017-10-15 10:31:06

标签: javascript ecmascript-6

我希望找到constlet作为保留关键字。 I've found only const,但没有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是关键字吗?如果没有,为什么?

2 个答案:

答案 0 :(得分:6)

let未在 ES6 ES5 strict mode之前保留,因此出于向后兼容的原因,不能将其视为与其余保留字相同:

var let = 5;

您会在新版本的规范中找到很多例外情况(例如let let = 5;无效)。

答案 1 :(得分:1)

您可以在referenced document

中看到该注释
  

在某些情况下,yield和await会给出标识符的语义。见12.1.1。在严格模式代码中, let 和static通过静态语义限制(见12.1.1,13.3.1.1,13.7.5.1和14.5.1)而不是词法语法被视为保留字。< / p>