Javascript 为什么let=0有效,而var=0无效?

Javascript 为什么let=0有效,而var=0无效?,javascript,Javascript,为什么不呢 let=0var是保留字,不能是全局变量的名称。但是让也保留一个字。它不同于var,它可以用作变量名 ES6版本中添加了let。为了与旧代码兼容,旧代码的变量名可以是let,将其用作名称仍然是正确的var是从Javascript开始添加的,所以为什么不允许它呢 let=0; 控制台日志(let)因为var一直是一个关键词,但let却没有。因此,当向语言中添加let时,TC39委员会必须对其进行指定,以确保使用let作为标识符的现有代码不会中断。(他们的主要规则之一是“不要破坏网络

为什么不呢


let=0
var
是保留字,不能是全局变量的名称。但是让也保留一个字。它不同于
var
,它可以用作变量名

ES6版本中添加了
let
。为了与旧代码兼容,旧代码的变量名可以是
let
,将其用作名称仍然是正确的
var
是从Javascript开始添加的,所以为什么不允许它呢

let=0;

控制台日志(let)因为
var
一直是一个关键词,但
let
却没有。因此,当向语言中添加
let
时,TC39委员会必须对其进行指定,以确保使用
let
作为标识符的现有代码不会中断。(他们的主要规则之一是“不要破坏网络”,他们非常认真(谢天谢地)

因此
let
是上下文中的关键字,例如
let
声明,但也可以是标识符:

设a=42;//关键字,由于上下文
let=“我是一个标识符”//标识符,由于上下文
控制台日志(a);

控制台日志(let)Javascript在ES5中有一组保留关键字:

break,do,instanceof,typeof,case,else,new,var,catch,finally, return、void、continue、for、switch、while、调试器、函数、this、, with、default、if、throw、delete、in、try

在JavaScript中使用保留关键字作为变量或函数名是非法的。例如,下面的代码抛出一个SyntaxError,表示
不能将关键字“delete”用作变量名

var delete = 1;
但是,在ES5中使用诸如let之类的ES6保留字作为变量名是非常好的

var let = 1;
ES5为该语言定义了两种
模式。在引入ES5之前存在的常规JavaScript被认为是
sloppy模式
,并且由于ES5,JavaScript程序员可以选择在
严格模式
下编写程序。strict模式为JavaScript引入了一组新规则,包括额外的保留字。这组关键字称为
futureservedword
。名单如下:

实现、接口、let、包、私有、受保护、公共、, 静态产量

FutureReservedWord关键字在非严格JavaScript中不强制执行。但在严格模式下,它们被视为保留字,将它们用作变量名是非法的

阅读更多

因此,如果不在严格模式下,可以使用
let
作为变量名。但是
var
始终是一个保留关键字

所以你可以做一些像

var let=“有些东西不舒服!”;

控制台日志(let)这个问题已经得到了回答,再加上-

根据,
静态
不属于关键字列表的一部分,除非在严格模式下使用

在严格模式代码中,
静态
被视为保留关键字 通过静态语义限制而不是词汇语法


因为在ES2015中,var是defined关键字,let是defined关键字,而大多数浏览器还不支持,所以它允许您创建一个名为let的新全局变量。为什么要尝试分配给javascript关键字oGood find@MichałPerłakowski。@亲爱的投票人,请告诉我为什么这个答案被投票人否决。@Glorfindel打字错误:P已修复!