为什么"让"es6和谐仅适用于严格使用?

But*_*GOL 2 let use-strict node.js ecmascript-6

这段代码:

var x = 8,
    y = 12;

let ( x = 5, y = 10) {
   return x + y;
} 
Run Code Online (Sandbox Code Playgroud)

..gives"SyntaxError:非法让扩展模式外的声明"

但是"使用严格"它可以正常工作.

所以有趣的是为什么'让'首先与"使用严格"模式集成?(根据http://kangax.github.io/compat-table/es6/#nodeharmony)

Sea*_*lan 6

let在ES3时代的JavaScript中不是一个保留词.例如,你可以这样做:

var let = 5;
Run Code Online (Sandbox Code Playgroud)

这将声明一个名为的变量let.ES5规范具有前瞻性,并且在未来保留在严格模式功能中的关键字中使用了它们.因此在ES6世界中,它们可以let作为关键字进行解析,但仅限于严格的容器内.在严格的容器之外,向后兼容性要求let被视为标识符,而不是关键字.