ES6(ECMAScript 6)笔记8-函数的扩展

函数参数的默认值

允许为函数的参数设置默认值,即直接写在参数定义的后面。

1
2
3
4
5
6
7
function log(x, y = 'World') {
  console.log(x, y);
}

log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello

可以为一个对象属性设置默认值

1
2
3
fetch(url, { body = '', method = 'GET', headers = {} }){
  console.log(method);
}

甚至可以设置双重默认值,调用函数fetch时,如果不含第二个参数,则默认值为一个空对象;如果包含第二个参数,则它的method属性默认值为GET。

1
2
3
fetch(url, { method = 'GET' } = {}){
  console.log(method);
}

如果传入undefined,将触发该参数等于默认值,null则没有这个效果。

1
2
3
4
5
6
function foo(x = 5, y = 6){
  console.log(x,y);
}

foo(undefined, null)
// 5 null