脚本宝典收集整理的这篇文章主要介绍了5个在ES6中修复的JavaScript“坏”的部分,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
ECMAScript 6(ES6)功能可以分为纯语法糖(如:类),增强JavaScript(如导入)的功能和修复JavaScript的“坏”部分(如let关键字)的功能。大多数博客和文章结合了所有这三种类型,并且可以压倒新手。所以我写的这篇文章只关注修复“坏”部分的关键ES6功能。
我希望在本博文结束时你会发现,通过使用像let和fat-arrow这样的ES6功能,你将获得丰厚的回报。
好的,让我们开始吧。
ES5只有“功能级范围”(即你将代码包装在函数中以创建范围)并引发了很多问题。当我们使用“ let ”或“ const ”而不是“ VAR ” 时,ES6提供“块”级别范围(即范围的大括号)。
下面的图片显示变量“bonus”不会在“if”块之外提升,使得工作成为大多数编程语言。
当我们在同一范围内使用“let”或“const”声明变量时,ES6不允许重复声明变量。这对于避免来自不同库的重复函数表达式非常有用(如下面的“add”函数表达式)。
在ES5中,在下面的情况下,我们必须使用Immediately Invoked Function ExPression(IIFE)来确保我们不会污染或覆盖全局范围。在ES6中,我们可以使用花括号({})并使用const或let来获得相同的效果。
我们需要最终在常规浏览器中运行ES6。Babel是用于将ES6转换为ES5的最流行的工具。它有各种接口,如CLI,节点模块和在线转换器。我将节点模块用于我的应用程序,并使用在线版本快速查看差异。
下图显示了Babel如何重命名变量来模拟“let”和“const”!
注意:除非使用新的for..of循环,否则不能使用const,因为它是常量。使用循环中的函数变得微不足道
在ES5中,如果你在一个循环中有一个函数(比如for(var i = 0; i <3; i ++){...}),并且如果该函数试图访问循环变量“i”,那么我们就在因为吊装而烦恼。在ES6中,如果使用“ let ”,则可以毫无问题地使用函数。
在ES5中,“this”可以根据它被调用的“where”以及甚至“如何”调用而变化,并且为JS开发人员带来了各种各样的痛苦。ES6通过“lexical”消除了这个主要问题。
词典“this”强制变量“this”始终指向物理位于其中的对象。
在下图中,我们尝试打印用户的FirstName和salary。但我们从服务器(模拟)获得薪水。请注意,当响应返回时,“this”是“window”而不是“PErson”对象。
只需使用fat-arrow函数=>,您就会自动获得词汇“this”。
下图显示了Babel如何将胖箭头功能转换为常规ES5功能w / workaround,以便它可以在当前浏览器中运行。
在ES5中,“arguments”就像一个Array(即我们可以遍历它),但不是一个Array。因此,排序,切片等所有数组函数都不可用。
在ES6中,我们可以使用一个名为“Rest”参数的新功能。它用3个点表示,名字像 ...... args。Rest参数是一个Array,因此我们可以使用所有的Array函数。
从概念上讲,JS中没有像“类”(即蓝图)这样的东西,就像Java中的其他OO语言一样。但是很长一段时间以来,当我们使用“new”关键字作为Classes时,人们已经处理了创建对象的“函数”(也就是“函数构造函数”)。
由于JS不支持“类”并且只是通过“原型”来模拟它,因此对于现有的JS开发人员和想要以传统OO方式使用它的新人来说,它的语法非常混乱。对于以下内容尤其如此:创建子类,在父类中调用函数等等。
ES6带来了一种在各种编程语言中很常见的新语法,使整个过程变得简单。下图显示了ES5和ES6类的并排比较。
严格模式(“使用严格”)有助于识别常见问题(或“坏”部分),还有助于“保护”JavaScript。在ES5中,严格模式是可选的,但在ES6中,它是许多ES6功能所必需的。因此,像babel这样的大多数人和工具会自动在文件顶部添加“use strict”,将整个JS代码置于严格模式,并迫使我们编写更好的JavaScript。
以上是脚本宝典为你收集整理的5个在ES6中修复的JavaScript“坏”的部分全部内容,希望文章能够帮你解决5个在ES6中修复的JavaScript“坏”的部分所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。