箭头函数
-
简写
// 当参数只有一个,可以省略小括号 // 当函数体只有一句代码,可以省略大括号,此时自带return功能 let fn = str =>{ console.log(str) }
-
特性
箭头函数内部的this指向上一层函数的this指向 箭头函数自身没有this指向的
-
什么时候用
回调函数 改变this指向的时候
扩展运算符
扩展运算符: [ … ]
- 把伪数组转成真数组
let liList = document.getElementsByTagName('li')
onsole.log([...liList])
- 合并数组/ 合并对象
let arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
let arr = [7, 8 ,9]
console.log(arr1.concat(arr2))
let arr3 = [...arr1, ...arr2, ...arr]
console.log(arr3)
- 复制数组/复制对象
let arr4 = [1, 2, 3]
let arr5 = [...arr4]
console.log(arr4)
Promise
-
作用:
Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息。 用来消除 异步 回调地狱 的问题
-
使用:
// 1. 创建Promise 实例, 用这个实例取包裹异步代码 let promise = new Promise(function(resolve, reject) { // 异步处理 // 处理结束后、调用resolve 或 reject }); // Promise 构造函数包含一个参数和一个带有 resolve(解析)和 reject(拒绝)两个参数的回调。在回调中执行一些操作(例如异步),如果一切都正常,则调用 resolve,否则调用 reject。 // 2. 使用Promise 实例给我们提供then方法拿数据和catch方法获取错误 Promise.then(data=>{ // 成功 }).catch(e =>{ // 失败 })
async&await
异步问题的终极(最佳) 解决方案,并别要配合Promise 使用
1. 异步代码交给Promise
2. Async函数中配合Await, 用同步的方式编写异步代码
// 就是在函数前面加上async 关键字,来表示它是异步的,
async function timeout() {
return 'hello world'
}
timeout();
console.log('虽然在后面,但是我先执行');
数组的常用方法
push / unshift
pop / shift
splice
reverse
sort: 排序
数组对象.sort((x, y) => x - y) // 从小到大
数组对象.sort((x, y) => y - x) // 从大到小
Join
// 用指令的字符串链接数组中元素, 返回一个拼接字符串
数组对象.join('连接符') // 没有连接符给空
includes
// 检测数组中是否包含某个元素, 如果有, 然会true, 否则返回false
配合if语句使用
数组对象.includes('检测的某个元素') // 如果有返回true
forEach
// 遍历数组(迭代), 来简化for循环
数组对象.forEach(参数)
filter
数组筛选 (过滤)
只留下满足条件的, 不满足条件的过滤掉
返回的是满足条件的数组
map
映射, 有一个数组得到一个新数组, 并且新数组中的每个元素与原数组的元素一一对应
数组对象.map()
find
根据条件查找元素,找到了返回第一个满足条件元素, 否则返回undefined
findIndex
根据条件查找元素的下标,找到了返回第一个满足条件的下标, 否则返回-1
some
检测数组中是否存在满足条件的元素, 如果有 返回true 否则返回fasle
找到一个满足的就不找了
every
检测数组中所有的,元素是否都满足某个条件, 如果都满足, 返回true 否则返回false
找到一个不满足的条件,就不找了, 立即返回最后的结果false
reduce
汇总 (统计一个最终的结果)
reduce(回调函数, 初使值)
初始值可有可无, 根据有无初始值,回调函数执行的次数
数组必须写初始值
1. 有初始值, 回调函数执行数组的length次
2. 无初始值, 回调函数执行数组的length - 1次