区块链技术博客
www.b2bchain.cn

JavaScript进阶(8)-ES6简介及新增let和const关键字

这篇文章主要介绍了JavaScript进阶(8)-ES6简介及新增let和const关键字的讲解,通过具体代码实例进行19987 讲解,并且分析了JavaScript进阶(8)-ES6简介及新增let和const关键字的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=19987

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

JavaScript进阶(8)-ES6简介及新增let和const关键字

目录

1 什么是ES6

1.1 ECMAScript

1.2 ECMAScript版本

1.3 各版本浏览器对ECMAScript的支持情况

2 let 与 const声明

2.1 let声明

2.1.1 块级作用域

2.1.2 暂时性死区

2.1.3 全局声明

2.1.4 for循环中的let

2.2 const声明

2.3 使用var,let还是const

3 总结


1 什么是ES6

1.1 ECMAScript

要想了解ECMAScript,就不得不谈到JavaScript的历史。

JavaScript进阶(8)-ES6简介及新增let和const关键字

1997年,JavaScript 1.1作为提案被提交给欧洲计算机制造商协会(Ecma)。第39技术委员会(TC39)承担了“标准化一门通用、跨平台、厂商中立的脚本语言的语法和语义”的任务(参见TC39-ECMAScript)。他们花了数月时间打造出ECMA-262,也就是ECMAScript(发音为“ek-ma-script”)这个新的脚本语言标准。1998年,国际标准化组织(ISO)和国际电工委员会(IEC)也将ECMAScript采纳为标准(ISO/IEC-16262)。自此以后,虽然具体实现各有不同,但是各家浏览器均以ECMAScript作为自己JavaScript实现的依据。即ECMAScript 是 JavaScript 的规格标准,JavaScript是ECMAScript的一种实现。日常场合,JavaScript和ECMAScript基本上是同义词。
注意:虽然JavaScript和ECMAScript基本上是同义词,但JavaScript远远不限于ECMA-262所定义的那样,JavaScript 由ECMAScript,DOM,BOM三部分组成。

2011年,ECMAScript 5.1版发布后,就开始制定6.0版了。因此,”ES6”这个词的原意是指JavaScript语言的下一个版本。但是,因为这个版本引入的语法功能太多,而且制定过程当中,还有很多组织和个人不断提交新功能,不可能把这些功能在一个版本里面全部引入。常规的做法是先发布6.0版,过一段时间再发6.1版,然后是6.2版、6.3版等等。但是,标准的制定者不想这样做,他们想让标准的升级成为常规流程:任何人在任何时候,都可以向标准委员会提交新语法的提案,然后标准委员会每个月开一次会,评估这些提案是否可以接受,需要哪些改进。如果经过多次会议以后,一个提案足够成熟了,就可以正式进入标准了。标准委员会最终决定,标准在每年的6月份正式发布一次,作为当年的正式版本。接下来的时间,就在这个版本的基础上做改动,直到下一年的6月份,草案就自然变成了新一年的版本。这样一来,就不需要以前的版本号了,只要用年份标记就可以了。ES6的第一个版本,就这样在2015年6月发布了,正式名称就是《ECMAScript 2015标准》(简称ES2015)。因此,ES6既是一个历史名词,也是一个泛指,含义是5.1版以后的JavaScript的下一代标准,涵盖了ES2015、ES2016、ES2017、ES2018、ES2019等等,而ES2015则是正式名称,特指该年发布的正式版本的语言标准。所以ES6一般用来泛指“下一代JavaScript语言”,但有时也用来特指ES2015标准。

JavaScript进阶(8)-ES6简介及新增let和const关键字

1.2 ECMAScript版本

ECMAScript不同的版本以“edition”表示(也就是描述特定实现的ECMA-262的版本)。ECMA-262最近的版本是第10版,发布于2019年6月。

ECMA-262的第1版本质上跟网景的JavaScript 1.1相同,只不过删除了所有浏览器特定的代码,外加少量细微的修改。ECMA-262要求支持Unicode标准(以支持多语言),而且对象要与平台无关(Netscape JavaScript 1.1的对象不是这样,比如它的Date对象就依赖平台)。这也是JavaScript 1.1和JavaScript 1.2不符合ECMA-262第1版要求的原因。

ECMA-262第2版只是做了一些编校工作,主要是为了更新之后严格符合ISO/IEC-16262的要求,并没有增减或改变任何特性。ECMAScript实现通常不使用第2版来衡量符合性(conformance)。

ECMA-262第3版第一次真正对这个标准进行更新,更新了字符串处理、错误定义和数值输出。此外还增加了对正则表达式、新的控制语句、try/catch异常处理的支持,以及为了更好地让标准国际化所做的少量修改。对很多人来说,这标志着ECMAScript作为一门真正的编程语言的时代终于到来了。

ECMA-262第4版是对这门语言的一次彻底修订。作为对JavaScript在Web上日益成功的回应,开发者开始修订ECMAScript以满足全球Web开发日益增长的需求。为此,Ecma T39再次被召集起来,以决定这门语言的未来。结果,他们制定的规范几乎在第3版基础上完全定义了一门新语言。第4版包括强类型变量、新语句和数据结构、真正的类和经典的继承,以及操作数据的新手段。与此同时,TC39委员会的一个子委员会也提出了另外一份提案,叫作“ECMAScript 3.1”,只对这门语言进行了较少的改进。这个子委员会的人认为第4版对这门语言来说跳跃太大了。因此,他们提出了一个改动较小的提案,只要在现有JavaScript引擎基础上做一些增改就可以实现。最终,ES3.1子委员会赢得了TC39委员会的支持,ECMA-262第4版在正式发布之前就被放弃了。

JavaScript进阶(8)-ES6简介及新增let和const关键字

ECMAScript 3.1变成了ECMA-262的第5版,于2009年12月3日正式发布。第5版致力于理清第3版存在的歧义,也增加了新功能。新功能包括原生的解析和序列化JSON数据的JSON对象、方便继承和高级属性定义的方法,以及新的增强ECMAScript引擎解释和执行代码能力的严格模式。第5版在2011年6月发布了一个维护性修订版,这个修订版只更正了规范中的错误,并未增加任何新的语言或库特性。

ECMA-262第6版,俗称ES6、ES2015或ES Harmony(和谐版),于2015年6月发布。这一版包含了这个规范有史以来最重要的一批增强特性。ES6正式支持了类、模块、迭代器、生成器、箭头函数、Promise、反射、代理和众多新的数据类型。

JavaScript进阶(8)-ES6简介及新增let和const关键字

ECMA-262第7版,也称为ES7或ES2016,于2016年6月发布。这次修订只包含少量语法层面的增强,如Array.prototype.includes和指数操作符。

ECMA-262第8版,也称为ES8、ES2017,完成于2017年6月。这一版主要增加了异步函数(async/await)、SharedArrayBuffer及Atomics API,以及Object.values()/Object.entries()/Object.getOwnPropertyDescriptors()和字符串填充方法,另外明确支持对象字面量最后的逗号。

ECMA-262第9版,也称为ES9、ES2018,发布于2018年6月。这次修订包括异步迭代、剩余和扩展属性、一组新的正则表达式特性、Promise finally(),以及模板字面量修订。

ECMA-262第10版,也称为ES10、ES2019,发布于2019年6月。这次修订增加了Array.prototype.flat()/flatMap()、String.prototype.trimStart()/trimEnd()、Object.fromEntries()方法,以及Symbol.prototype.description属性,明确定义了Function.prototype.toString()的返回值并固定了Array.prototype.sort()的顺序。另外,这次修订解决了与JSON字符串兼容的问题,并定义了catch子句的可选绑定。

1.3 各版本浏览器对ECMAScript的支持情况

JavaScript进阶(8)-ES6简介及新增let和const关键字

1996年,Netscape Navigator 3发布时包含了JavaScript 1.1。JavaScript 1.1规范随后被提交给Ecma,作为对新的ECMA-262标准的建议。随着JavaScript迅速走红,网景非常愿意开发1.2版。可是有个问题:Ecma尚未接受网景的建议。

Netscape Navigator 3发布后不久,微软推出了IE3。IE的这个版本包含了JScript 1.0,本意是提供与JavaScript 1.1相同的功能。不过,由于缺少很多文档,而且还有不少重复性功能,JScript 1.0远远没有JavaScript 1.1那么强大。

JScript的再次更新出现在IE4中的JScript 3.0(2.0版是在Microsoft Internet Information Server 3.0中发布的,但从未包含在浏览器中)。微软发新闻稿称JScript 3.0是世界上第一门真正兼容Ecma标准的脚本语言。当时ECMA-262还没制定完成,因此JScript 3.0遭受了与JavaScript 1.2同样的命运,它同样没有遵守最终的ECMAScript标准。

网景又在Netscape Navigator 4.06中将其JavaScript版本升级到1.3,因此做到了与ECMA-262第1版完全兼容。JavaScript 1.3增加了对Unicode标准的支持,并做到了所有对象都与平台无关,同时保留了JavaScript 1.2所有的特性。

后来,当网景以Mozilla项目的名义向公众发布其源代码时,人们都期待Netscape Navigator 5中会包含JavaScript 1.4。可是,一个完全重新设计网景代码的激进决定导致了人们的希望落空。JavaScript 1.4只在Netscape Enterprise Server中作为服务器端语言发布了,从来就没有进入浏览器。

到了2008年,五大浏览器(IE、Firefox、Safari、Chrome和Opera)全部兼容ECMA-262第3版。IE8率先实现ECMA-262第5版,并在IE9中完整支持。Firefox 4很快也做到了。下表列出了主要的浏览器版本对ECMAScript的支持情况。

浏览器 支持的ECMAScript版本
Netscape Navigator 2
Netscape Navigator 3
Netscape Navigator 4~4.05
Netscape Navigator 4.06~4.79 第1版
Netscape 6+(Mozilla 0.6.0+) 第3版
IE3
IE4
IE5 第1版
IE5.5~8 第3版
IE9 第5版(部分)
IE10~11 第5版
Edge 12+ 第6版
Opera 6~7.1 第2版
Opera 7.2+ 第3版
Opera 15~28 第5版
Opera 29~35 第6版(部分)
Opera 36+ 第6版
Safari 1~2.0.x 第3版(部分)
Safari 3.1~5.1 第5版(部分)
Safari 6~8 第5版
Safari 9+ 第6版
iOS Safari 3.2~5.1 第5版(部分)
iOS Safari 6~8.4 第5版
iOS Safari 9.2+ 第6版
Chrome 1~3 第3版
Chrome 4~22 第5版(部分)
Chrome 23+ 第5版
Chrome 42~48 第6版(部分)
Chrome 49+ 第6版
Firefox 1~2 第3版
Firefox 3.0.x~20 第5版(部分)
Firefox 21~44 第5版
Firefox 45+ 第6版

JavaScript进阶(8)-ES6简介及新增let和const关键字

2 let 与 const声明

ES2015(ES6) 新增加了两个重要的 JavaScript 关键字: let 和 const。let 声明的变量只在 let 命令所在的代码块内有效。const 声明一个只读的常量,一旦声明,常量的值就不能改变。

2.1 let声明

2.1.1 块级作用域

let跟var的作用差不多,但有着非常重要的区别。最明显的区别是,let声明的范围是块作用域,而var声明的范围是函数作用域。

if (true) {         var name1 = '微信本文转自互联网,侵权联系删除JavaScript进阶(8)-ES6简介及新增let和const关键字

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » JavaScript进阶(8)-ES6简介及新增let和const关键字
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址