一尘不染

使用'let'作为变量名不会在Google v8中引发任何错误

node.js

我在chrome开发人员控制台中编写了一些随机代码。令我惊讶的是,chrome让我用它let作为变量名,因为let保留关键字完全不对。我需要了解为什么会这样。

场景:

var const = 78 //throws an error as expected

var function = 46 //throws an error as expected

var let = 56 //didn't throw an error :O

let //prints 56, which is wrong because 'let' is a keyword

let ab = 90

ab //prints 90 as expected

此缺陷存在于中node。但是,当我在Babel
REPL中
尝试时,会抛出错误。

我认为这与Google v8有关


阅读 294

收藏
2020-07-07

共1个答案

一尘不染

Mohsen Azimi的这篇文章可以很好地说明其背后的原因。这是它的快速摘要。

以下关键字在JavaScript规范中定义为FutureReservedWord

implements     interface   let       package    private
protected      public      static    yield

在普通模式下,它们可以用作变量名而不会出现错误;但是,在严格模式下,它们被视为保留字,并且将引发以下错误:

SyntaxError: Cannot use the reserved word 'let' as a variable name in strict mode.

这样一来,ES2015之前的代码就不会中断-如果有人let在旧版应用程序中命名了许多变量,那么如果JS规范突然中断了所有操作,他们可能会不满意。

2020-07-07