字符串模板
使用反引号的特殊字符串,用法较一般字符串更加方便、功能强大,支持变量替换、换行等等。
解构赋值
对象的解构赋值
- 一般语法格式
- let 关键字声明的变量的解构赋值需要提供括号
- 解构赋值可以嵌套
- 解构赋值中可以实现变量名的替换
- 回退机制
数组的解构赋值
- 一般语法格式
- 缺省元素要空出
- …others表示剩余全部
- 数组解构可以方便地用于变量值的交换
四种循环遍历
- 普通的for循环
- 数组的forEach
- 对象的for…in
- 数组的for…of
let fruits = ['apple', 'mongo', 'peach', 'banana', 'strawberry']
console.log('普通for循环');
for(let i=0; i<fruits.length; i++) {
console.log(fruits[i]);
}
// forEach循环是遍历每一个元素,但是不支持break、continue
console.log('forEach循环');
fruits.forEach(fruit => {
console.log(fruit);
})
// for in 循环获取的是数组的属性,并且是遍历数组对象的可枚举属性,通过下标获取可枚举属性值
console.log('for in循环');
for(let index in fruits) {
console.log(fruits[index]);
}
// for of循环可以获取每一个元素,并且支持break、continue
console.log('for of循环');
for(let fruit of fruits) {
console.log(fruit);
}
for…of循环
for…of循环在可迭代对象上创建迭代循环,其中可迭代对象包括:
Array、String、Map(键值对)、Set(集合)等。
使用for ele of obj.entries()
,
则ele是数组类型(类似map),第一个值为下标,第二个值为元素。
const celes = ['徐阶', '陆炳', '高拱']
for(let ele of celes) {
console.log(ele);
}
/*
徐阶
陆炳
高拱
*/
for(let ele of celes.entries()) {
console.log(ele);
}
/*
[ 0, '徐阶' ]
[ 1, '陆炳' ]
[ 2, '高拱' ]
*/
在后一种写法中,我们甚至可以使用解构赋值获取元素和其下标:
for(let [index, person] of celes.entries()) {
console.log(index, person);
}
剩余参数
常用:
- 接收函数参数作为数组
- 数组的解构赋值
// 此处的...numbers就是剩余参数写法
function sum(...numbers) {
// Array.reduce(callback(accumulator, currentValue[, index, array])[, initialValue])
// accumulator: 累计器,上一次调用callback回调返回的累积值
// currentValue: 数组中正在处理的元素
// index: 数组中正在处理的元素的索引
// array: 正在处理的数组
// initialValue: 第一次调用callback回调时的第一个参数值,默认为array数组的第一个元素
return numbers.reduce((prev, curr) => prev + curr)
}
console.log(sum(1, 2, 3, 4, 5));