01 从 for 到 forEach() 到 for-of
在 ES5 之前,迭代一个数组的代码示例如下:
在 ES5 中,可以使用数组的 forEach() 方法:
for 循环可以被中断,而 forEach() 更简洁。在 ES6 中,两者优点可以兼得:
如果想获得元素索引,代码示例如下:
处理参数默认值
在 ES5 中,对于函数参数的默认值,一般的处理方式如下面的代码示例:
而 ES6 给我们提供了更简单的方式,代码示例如下:
处理命名参数
如过我们想在传递参数的时候,带上参数的「名字」,一般通过对象字面值来实现,代码示例如下:
在 ES5 中会按如下的方式实现上面的 selecEntries 函数:
而在 ES6 中的实现方式如下:
使参数可选
参数可选的意思是可以在调用函数的时候不传递参数。ES5 中的代码示例如下:
在 ES6 中指定 {} 作为参数的默认值,示例代码如下:
02 从 arguments 到 rest parameters
在 ES5 中,如果要一个函数或方法接受任意数量的参数,必须使用一个特殊的变量 arguments:
在 ES6 中,你可以通过 … 操作符声明一个 rest parameter(下面例子中的 args):
如果只对后面的参数感兴趣,rest paramters 会更加友好:
在 ES5 处理上述情况的话比较麻烦:
Rest parameters 使代码更加易读,从函数的参数定义就可以看出来这个函数拥有不定数量的参数。
03 从 apply() 到 spread operator (…)
在 ES5 中,使用 apply() 将数组转换成 paramters;在 ES6 中用 spread operator 来到达此目的。
Math.max()
Math.max() 函数返回它最大的 arguments,它可以接受任意数量的 arguments,但对于数组不行。
ES5 - apply():
ES6 - spread operator:
Array.prototype.push()
Array.prototype.push() 将它的 arguments 作为元素附加到它的接收者上,没有一个方法可以解构地附加一个数组到另一个。
ES5 - apply():
ES6 - spread operator:
04 从 concat() 到 spread operator (…)
Spread operator(扩展操作符)可以把它的操作数变成数组元素,也就是说它可以作为数组方法 concat() 的替代。
ES5 - concat():
ES6 - spread operator:
05 从对象字面值中的函数表达式到方法定义
在 JavaScript 中,方法是值为函数的属性。
在 ES5 对象字面值中,方法的创建类似于属性,属性的值由函数表达式来提供。
ES6 有特别的语法来创建方法:
06 从构造函数到类
ES6 的类是针对构造函数更简单的语法。
基类
在 ES5 中,使用构造函数直接实现:
在 ES6 中,类为构造函数提供更简单的的语法:
注意方法定义的简洁语法 - 不需要关键字 function,还要注意在类里的部分之间没有逗号。
派生类
在 ES5 中子类化是复杂的,特别是引用基类构造函数和基类属性。下面是创建基于 Person 的 Employee 的子构造函数的范式:
ES6 有对子类化的内置支持,通过 extends 从句:
END
查看更多文章请关注【实训在线】微信公众号
原文首发:www.shixun.online