ES6十大功能

本文介绍了JavaScript中的各种高级特性,包括数组映射(map)、过滤(filter)、查找(find)、遍历(every/some)、reduce方法、箭头函数、类的定义、对象功能增强、模板字符串、默认参数以及rest参数和扩展运算符的应用。
摘要由CSDN通过智能技术生成

var capitalizedColors = colors.map(capitalize)

console.log(capitalizedColors)

运行结果如下:

[“RED”,“GREEN”,“BLUE”]

filter

创建一个包含原始数组子集的新数组。 新数组包含的这些元素通过由传入的函数实现的测试,该函数应该返回true或false。

var values = [1, 60, 34, 30, 20, 5]

function lessThan20(val) {

return val < 20

}

var valuesLessThan20 = values.filter(lessThan20)

console.log(valuesLessThan20)

运行结果如下:

[1,5]

find

找到通过传入的函数测试的第一个元素,该函数应该返回true或false。

var people = [

{name: ‘Jack’, age: 50},

{name: ‘Michael’, age: 9},

{name: ‘John’, age: 40},

{name: ‘Ann’, age: 19},

{name: ‘Elisabeth’, age: 16}

]

function teenager(person) {

return person.age > 10 && person.age < 20

}

var firstTeenager = people.find(teenager)

console.log(‘First found teenager:’, firstTeenager.name)

运行结果如下:

First found teenager: Ann

every

检查数组的每个元素是否通过传入函数的测试,该函数应该返回true或false(每个函数都返回true,则结果为true,否则为false)。

var people = [

{name: ‘Jack’, age: 50},

{name: ‘Michael’, age: 9},

{name: ‘John’, age: 40},

{name: ‘Ann’, age: 19},

{name: ‘Elisabeth’, age: 16}

]

function teenager(person) {

return person.age > 10 && person.age < 20

}

var everyoneIsTeenager = people.every(teenager)

console.log('Everyone is teenager: ', everyoneIsTeenager)

运行结果如下:

Everyone is teenager: false

some

检查数组的任何元素是否通过由提供的函数实现的测试,该函数应该返回true或false。(有一个函数返回true,则结果true。否则结果为false)

var people = [

{name: ‘Jack’, age: 50},

{name: ‘Michael’, age: 9},

{name: ‘John’, age: 40},

{name: ‘Ann’, age: 19},

{name: ‘Elisabeth’, age: 16}

]

function teenager(person) {

return person.age > 10 && person.age < 20

}

var thereAreTeenagers = people.some(teenager)

console.log(‘There are teenagers:’, thereAreTeenagers)

运行结果如下:

There are teenagers: true

reduce

方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。 累加器的初始值应作为reduce函数的第二个参数提供。

var array = [1, 2, 3, 4]

function sum(acc, value) {

return acc + value

}

function product(acc, value) {

return acc * value

}

var sumOfArrayElements = array.reduce(sum, 0)

var productOfArrayElements = array.reduce(product, 1)

console.log(‘Sum of’, array, ‘is’, sumOfArrayElements)

console.log(‘Product of’, array, ‘is’, productOfArrayElements)

运行结果如下:

Sum of [1,2,3,4] is 10

Product of [1,2,3,4] is 24

3.箭头函数

执行非常简单的函数(如上述的Sum或Product)需要编写大量的模版。 有什么解决办法吗? 是的,可以尝试箭头函数!

var array = [1, 2, 3, 4]

const sum = (acc, value) => acc + value

const product = (acc, value) => acc * value

var sumOfArrayElements = array.reduce(sum, 0)

var productOfArrayElements = array.reduce(product, 1)

箭头函数也可以内联。 它真的简化了代码:

var array = [1, 2, 3, 4]

var sumOfArrayElements = array.reduce((acc, value) => acc + value, 0)

var productOfArrayElements = array.reduce((acc, value) => acc * value, 1)

箭头函数也可以更复杂,并且有很多行代码:

var array = [1, 2, 3, 4]

const sum = (acc, value) => {

const result = acc + value

console.log(acc, ’ plus ', value, ’ is ', result)

return result

}

var sumOfArrayElements = array.reduce(sum, 0)

4. 类

哪个Java开发人员在切换到JS项目时不会错过类? 谁不喜欢显式继承,像Java语言,而不是为原型继承编写魔术代码? 这引起了一些JS开发者反对,因为在ES6中已经引入了类。 他们不改变继承的概念。 它们只是原型继承的语法糖。

class Point {

constructor(x, y) {

this.x = x

this.y = y

}

toString() {

return ‘[X=’ + this.x + ‘, Y=’ + this.y + ‘]’

}

}

class ColorPoint extends Point {

static default() {

return new ColorPoint(0, 0, ‘black’)

}

constructor(x, y, color) {

super(x, y)

this.color = color

}

toString() {

return ‘[X=’ + this.x + ‘, Y=’ + this.y + ‘, color=’ + this.color + ‘]’

}

}

console.log('The first point is ’ + new Point(2, 10))

console.log('The second point is ’ + new ColorPoint(2, 10, ‘green’))

运行结果如下:

The first point is [X=2, Y=10]

The second point is [X=2, Y=10, color=green]

The default color point is [X=0, Y=0, color=black]

5.对象功能增强

对象功能已被增强。 现在我们可以更容易地:

定义具有和已有变量名称相同且赋值的字段

定义函数

定义动态(计算)属性

const color = ‘red’

const point = {

x: 5,

y: 10,

color,

toString() {

return ‘X=’ + this.x + ‘, Y=’ + this.y + ‘, color=’ + this.color

},

}

console.log('The point is ’ + point)

console.log('The dynamic property is ’ + point.prop_42)

运行结果如下:

The point is X=5, Y=10, color=red

The dynamic property is 42

6. 模板字符串

谁喜欢写大字符串和变量连接? 我相信我们中只有少数人喜欢。 谁讨厌阅读这样的代码? 我确定大家都是,ES6引入了非常易于使用的字符串模板和变量的占位符。

function hello(firstName, lastName) {

return `Good morning ${firstName} ${lastName}!

How are you?`

}

console.log(hello(‘Jan’, ‘Kowalski’))

运行结果如下:

Good morning Jan Kowalski!

How are you?

请注意,我们可以写多行文本。

重要提示:使用反引号代替撇号来包装文本。

7. 默认函数参数

你不喜欢提供所有可能的函数参数? 使用默认值。

function sort(arr = [], direction = ‘ascending’) {

console.log(‘I’m going to sort the array’, arr, direction)

}

sort([1, 2, 3])

sort([1, 2, 3], ‘descending’)

运行结果如下:

I’m going to sort the array [1,2,3] ascending

I’m going to sort the array [1,2,3] descending

8. rest参数和扩展运算符

扩展

它可以将数组或对象内容提取为单个元素。

示例 - 制作数组的浅拷贝:

var array = [‘red’, ‘blue’, ‘green’]

var copyOfArray = […array]

console.log(‘Copy of’, array, ‘is’, copyOfArray)

console.log(‘Are’, array, ‘and’, copyOfArray, ‘same?’, array === copyOfArray)

运行结果如下:

Copy of [“red”,“blue”,“green”] is [“red”,“blue”,“green”]

Are [“red”,“blue”,“green”] and [“red”,“blue”,“green”] same? false

示例 - 合并数组:

var defaultColors = [‘red’, ‘blue’, ‘green’]

var userDefinedColors = [‘yellow’, ‘orange’]

var mergedColors = […defaultColors, …userDefinedColors]

console.log(‘Merged colors’, mergedColors)

运行结果如下:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取

前端面试题宝典

前端校招面试题详解

想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

[外链图片转存中…(img-Ays8lkDY-1712411338123)]

[外链图片转存中…(img-zxRQ1YcG-1712411338124)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-Mnv0fnFU-1712411338124)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里领取

[外链图片转存中…(img-sKJnQYsz-1712411338124)]

[外链图片转存中…(img-bGLwuRIG-1712411338124)]

[外链图片转存中…(img-YxbORFnY-1712411338125)]

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值