"var,let,const"是JS中的关键字,不能用关键字命名变量.

例如

const = 13; //Uncaught SyntaxError: Unexpected token '='
var = 13; //Uncaught SyntaxError: Unexpected token '='
const let = 123; //Uncaught SyntaxError: let is disallowed as a lexically bound name
let let = 13; //Uncaught SyntaxError: let is disallowed as a lexically bound name
x = 13; //works good, so far so good

let = 13; //works fine,
++let // returns 14

起初,我认为因为"let"是一个新的关键字(ES2015),所以它是向后兼容的,或者类似的东西,但你不能用const关键字或任何JS关键字

有人知道为什么吗?

推荐答案

正如你所猜测的那样,这是由于向后兼容.const has always been a reserved word(在ES5规范中称为FutureReservedWord).自从JavaScript问世以来,您就无法命名变量const.

let也被认为是FutureReservedWord,但only in strict mode-但严格模式仅在ES5中引入,当时ES6在遥远的地平线上.

'use strict';
let = 10; // errors

var一直存在,因此一直禁止命名变量var.

变量从未被命名为const,但let没有这样的限制.如果在(非严格的)ES5或ES6中被禁止,它将 destruct 向后兼容性,这是web标准strive not to break at all costs.

如果早在JS第一次被设计的时候,人们就有先见之明go 想:"也许,在future ,我们会想用单词constlet来声明变量,所以我们会让它们暂时保留关键字."那么你就不会看到不一致性了,因为两者从一开始都是保留的.

在现代JS中,有许多类似的关键字有时具有特殊意义,但当用作变量名时,不要抛出错误.

static = 5;
async = 10;
await = 15;
yield = 20;
console.log('finished without errors');

Javascript相关问答推荐

自定义高图中的x轴标签序列

在服务器上放置了Create Reaction App Build之后的空白页面

如何使用子字符串在数组中搜索重复项

用于在路径之间移动图像的查询

扩展类型的联合被解析为基类型

400 bad request error posting through node-fetch

如何为仅有数据可用的点显示X轴标签?

如何在Java脚本中对数据进行签名,并在PHP中验证签名?

构建器模式与参数对象输入

JavaScript将字符串数字转换为整数

如何在TransformControls模式下只保留箭头进行翻译?

是否有静态版本的`instanceof`?

React数组查找不读取变量

按下键盘上的空格键后,单词就会变色.我想在最后一封信之后立即给它们涂上 colored颜色

如何调试从CEPRESS测试文件调用的Java脚本文件

我不能将每个产品单独添加或删除到Collection 列表中

如何调用多个$HTTP.POST请求?

Redux不更新状态

为什么它不记录任何东西在控制台?

react setState不保留以前的状态