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已修复!