js ES6知识点总结
1、let、const
(1)let、const声明形成块级作用域,const声明后必须赋值
(2)暂时性死区
var 声明的变量可以在声明之前使用,相当于声明值为undefined。
let、const 声明的变量不能在声明之前使用,会报错,这一部分称为暂时性死区。
if (a == 1) {
console.log(temp) //报错
temp = 2
}
2、解构
(1)数组解构赋值
const [x,y,z] = [1,2,3]
console.log(x,y,z) //1, 2, 3
(2)对象解构赋值
const { name, food } = { name: "dog", food: "meet"}
console.log(name, food) //dog, meet
3、模板字符串
使用 ``将整个字符串包裹起来,使用${}包裹变量或者表达式。
const a = 20
const b = 30
console.log(`${a}+${b}=${a+b}`) //20+30=50
3、展开运算符(…)
const arr1 = [1, 2, 3]
const arr2 = [...arr1, 4, 5]
console.log(arr2) //[1, 2, 3, 4, 5]
4、es6新增数组方法
(1)forEach()
forEach()会遍历数组。
forEach()有三个参数, 第一个参数是当前元素, 第二个参数是当前元素的索引, 第三个参数是当前元素所属的数组。
let arr1 = [1, 2, 3, 4];
let arr2 = [];
arr1.forEach((item) => {
if (item > 2) {
arr2.push(item)
}
});
console.log(arr2) //[3, 4]
(2)map()
arr.map(callback) 映射数组(遍历数组)
callback的参数: value --当前索引的值
index --索引
array --原数组
let arr1 = [1, 2, 3, 4];
let arr2 = arr1.map((item) => {
return item*2
})
console.log(arr1) //[1, 2, 3, 4]
console.log(arr2) //[2, 4, 6, 8]
(3)filter()
arr.filter(callback) 过滤数组,返回满足条件的数组。
callback的参数: value --当前索引的值
index --索引
array --原数组
let array = [1, 2, 3, 4, 5];
let temp = array.filter((item) => {
return item > 3;
});
console.log(temp); //[4, 5]
console.log(array); //[1, 2, 3, 4, 5]
(4)every()
arr.every(callback) 过滤数组,依据判断条件,数组的元素是否全满足,若满足则返回ture
let array = [1, 2, 3, 4, 5];
let temp = array.every((item) => item > 3)
console.log(temp); //false
(4)some()
arr.every(callback) 过滤数组,依据判断条件,数组的元素是否有一个满足,若有一个满足则返回ture,并停止循环。
let array = [1, 2, 3, 4, 5];
let temp = array.some((item) => item > 3)
console.log(temp); //true
5、for of
let array = [1, 2, 23, 46, 5];
for (const i of array) {
console.log(i)
}
console.log("___________________")
for (const key in array) {
console.log(array[key])
}
打印结果:
1
2
23
46
5
1
2
23
46
5
6、promise
promise是一个异步操作对象,对象的状态不受外界影响。
promise对象有3种状态:pending(进行中),fulfilled(已成功),rejected(已失败),只有异步操作的结果可以决定当前是哪一种状态。一旦状态改变就不会再改变了,要么从pending变为fulfilled,要么从pending变为rejected,称为已定型resolved。
//promise 实例
const promise = new Promise(function(resolve, reject) {
// ... some code
if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。
promise.then(function(value) {
// success
}, function(error) {
// failure
});