知识点回顾:
- 数组解构:数组是有序列表,因此解构只需要按照顺序解构即可
- 对象解构:对象是无序列表,因此解构时只能按照属性进行解构,当解构时声明的变量名恰好与对象属性名相同时可以简写。
扩展函数
函数返回多个值,并接受
function fun(){
const a = 1;
const b = 2;
return [a,b];
}
//利用解构接收数据
const [a,b] = fun();
函数返回函数
function fun(){
const a = 1;
const b = 2;
return function(){
console.log(b)
}
}
const res = fun();
res();//输出2
//这里fun()执行完后,变量b应该被释放,但是res()却能正常访问到b,这种一个函数能够访问到另一个函数变量的情况我们称为闭包
fun()();//与上面的两句代码相同,输出2
闭包:一个函数可以访问另一个函数的变量(缺点:被访问的变量无法被释放,导致内存泄漏)
参数的默认值
function fn(a,b){
return a+b;
}
console.log(fn());没有参数时,输出NaN
//程序优化
function fn(a,b){
a = a || 0;
b = b || 0;
return a+b;
}
console.log(fn());没有参数时,输出0
//es6中给函数参数添加默认值
function fn(a = 0,b = 0){
return a+b;
}
console.log(fn());没有参数时,输出0