ES6之参数默认值

48 阅读1分钟

ES6之参数默认值

function sum(a,b=1,c=2){
    return a+b+c
}
console.log(sum(1,undefined,undefined))

先看例子: 我们可以看到函数的形参后面有了等号,等号后面就是参数的默认值。它的意思是在参数取 undefined 时使用默认值。注意不要使用 null ,也不要不填。 我们再看一个例子:

function getContainer(){
    return document.getElementById('container');
}
/**
 * 
 * @param {*} name 元素名称
 * @param {*} container 元素父元素
 * @param {*} content 元素内容
 */
function createElement(name='div',container=getContainer(),content){
    const element = document.createElement(name);
    if(content){
        element.innerHTML = content;
    }
    container.appendChild(element);
}
createElement(undefined,undefined,'你好')

参数的默认值也可以是一个表达式。这个例子中可以直接创建一个函数。

function test(a=1,b){
    a=3;
    console.log('arguments',arguments[0],arguments[1]) //1,2
    console.log(a,b);//3,2
}
test(1,2)

在这个例子中,使用默认值会进入严格模式,严格模式中形参和 arguments 分离。改动形参不会改动 arguments。

function test(a=b,b){
    console.log(a,b);
    let a =2;
}
test(undefined,2)

上面的代码会报错。因为形参也类似于 let 和 const ,会有自己的作用域。在作用域中不能在未声明前使用,也不可以声明两次。