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 ,会有自己的作用域。在作用域中不能在未声明前使用,也不可以声明两次。