六、解构赋值
1.将数组中的元素赋值给变量
let [变量1,变量2…变量n]=数组
2.将数组中的元素拆分作为参数传递
fn(…数组)
3.对对象的解构Object
let {变量1,变量2}=对象
*/
let arr = [1, 2, 3, 4, 5, 6, 7];
let [a, b, …c] = arr;
console.log(a);//1
console.log(b);//2
console.log©;
// 交换位置
[arr[1], arr[2]] = [arr[2], arr[1]]
console.log(arr);//两个元素交换了位置
function sum(a, b, c) {
return a + b + c;
}
let arr2 = [123, 456, 789];
console.log(sum(...arr2));//对数组的解构赋值,把里面的元素拆出来了,元素作为参数去赋值
let obj = { name: 'swk', age: 18, gender: '男' };
let { name, age, gender } = obj;
console.log(name, age, gender);
七、箭头函数
语法:
(xxx,ccc)=>返回值
参数=>返回值
(xxx,ccc)=>{
语句…
}
注意:箭头函数中的this在函数创建时就已确定,由它的外层函数(作用域)的this来决定,外层的this是谁,它的this就是谁
// function sum(a, b) {
// return a + b;
// }
// 等价于上面的函数,这样简洁的就称为箭头函数
let sum = (a, b) => a + b;
console.log(sum(123, 456));
let arr = ['孙悟空', '猪八戒', '沙和尚'];
// 回调函数
// arr.forEach(function (element) {
// console.log(element);
// })
// 箭头函数
arr.forEach(element => console.log(element));
// 排序中运用箭头函数
let arr2 = [3, 4, 1, 2, 5];
arr2.sort((a, b) => a - b);
// 函数形式
let sum2 = (a, b) => {
console.log('hello');
console.log('你好');
return a + b;
};
console.log(sum2(132, 456));
八、闭包
闭包:闭包就是能访问到外部函数中变量的内部函数(闭包是个函数)
闭包主要用来藏起一些不希望被别人看到的东西
闭包构成的要件:
1.闭包必须有函数的嵌套
2.内部函数必须要访问外部函数的变量
3.必须将内部函数作为返回值返回
闭包的生命周期:当外部函数调用时,闭包便产生了,外部函数每调用一次就会产生一个闭包,当内部函数被垃圾回收时,闭包就会销毁
//函数的嵌套
// function outer() {
// // 定义一个变量,记录函数执行的次数
// let times = 0;
// // times只能被fn所看到
// // 这里inner将相当于一个闭包,times只能inner访问到,而且times属于外部函数的变量
// function inner() {
// // 创建一个函数,函数每次调用时,都会打印函数被调用的次数
// times++;
// alert(times);
// }
// // 将inner设置为函数的返回值
// return inner;
// }
// let fn = outer();
// fn();
// fn();
// 改进,利用立即执行函数,直接return回去,只会执行一次用完就销毁
let fn4 = (function () {
let times = 0;
return function () {
alert(++times);
};
})();