- includes
传入元素,如果数组中能找到此元素,则返回true,否则返回false
const includeArr = [1,2,3,'小明','科比']
const isKobe = includeArr.includes('科比')
console.log(iskobe) // true
跟indexOf很像,但还是有区别的
const arr = [1,2,NaN]
console.log(arr.indexOf(NaN)) // -1 indexOf找不到NaN
console.log(arr.includes(NaN)) // true includes 能找到NaN
- 求幂运算符
以前求幂,写法
const num = Math.pow(3,2) // 9
ES7提供了求幂运算符:**
const num = 3 ** 2 // 9
- Object.values
可以用来获取对象的value的集合
const obj = {
name: 'xiaoming',
age: 22,
gender: '男'
}
const values = Object.values(obj)
console.log(values) // ['xiaoming',22,'男']
- Object.entries
可以用来获取对象的键值对集合
const obj = {
name: 'xiaoming',
age: 22,
gender: '男'
}
const entries = Object.entries(obj)
console.log(entries)
//[['name','xiaoming'],['age',22],['gender','男']]
- async/await
工作中,我们会遇到这种场景,接口一,请求到数据一,
而数据一被当做请求二的参数去请求数据二,我们会用promise这么做
function fn() {
// 模拟第一次请求
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(5)
}, 1000)
}).then(res => {
// 模拟第二次请求
new Promise((resolve, reject) => {
setTimeout(() => {
// 拿第一次请求的数据去乘10,当做第二次请求的数据
resolve(res * 10)
}, 2000)
}).then(sres => {
console.log(sres)
})
})
}
fn() // 1 + 2 = 3 3秒后输出 50
这样的嵌套是不美观的,如果有很多个接口,那就会嵌套很多层,
此时我们可以使用async/await来以同步方式执行异步,注意以下几点:
.await只能在async函数里使用
.await后面最好接Promise,如果后面接的是普通函数则会直接执行
.async函数返回的是一个Promise
function fn1 () {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(5)
}, 1000)
})
}
function fn2 (data) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(data * 10)
}, 2000)
})
}
async func