扩展函数知识

149 阅读1分钟

知识点回顾:

  1. 数组解构:数组是有序列表,因此解构只需要按照顺序解构即可
  2. 对象解构:对象是无序列表,因此解构时只能按照属性进行解构,当解构时声明的变量名恰好与对象属性名相同时可以简写。

扩展函数

函数返回多个值,并接受

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