【发布时间】:2018-01-13 05:55:51
【问题描述】:
我正在参加在线 JS 课程,讲师使用的语法是:let = names = ["Bob","Tim","Larry"]。我确信这是一个意外,但不知何故被他使用的 JS 环境所允许。他最终所做的(可能是偶然的)是将数组分配给“names”变量,然后将其分配给“let”变量。
我的问题:为什么这不是错误?为什么“让”可以用作变量?我们知道“让”是一个关键字。或者这只是他们还没有取缔的东西?您仍然可以在 Chrome 和 Firefox 控制台中执行此操作……同样也可以在 Node 中执行此操作。
【问题讨论】:
-
有趣的地方。
let=123是允许的,它将创建一个值为 123 的全局范围变量,但var=123会引发错误。 -
在
let=123工作的环境下,let foo = 123工作;也工作?你可以在同一个脚本中做这两个吗? -
出于某种原因,他们没有将其包含在保留关键字列表中。实际上,您甚至可以执行
var let = 'something'并且它可以工作,但是为了避免第一个问题(意外分配一个全局变量而不是初始化一个名为 names 的数组,您可以将'use strict'添加到脚本的开头。 -
@JeffUK 我认为这在任何环境中都行不通,因为 pre-let 浏览器会抛出意外的标识符,而 ES6 兼容的浏览器会抛出意外的数字,因为没有
=它会尝试贴花变量. -
由于
let是最近才被引入到 JavaScript 中的,因此将 `let` 用作非法变量名将是一个危险的步骤。这可能会导致遗留代码出现问题。
标签: javascript syntax ecmascript-6 let