ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法
function sayHello (x, y) {
y = y || 'World'
console.log(x, y)
}
sayHello('Hello') // Hello World
sayHello('Hello', 'China') // Hello China
sayHello('Hello', '') // Hello World
ES6 开始允许为函数的参数设置默认值,即直接写在参数定义的后面
function sayHello (x, y = 'World') {
console.log(x, y)
}
sayHello('Hello') // Hello World
sayHello('Hello', 'China') // Hello China
sayHello('Hello', '') // Hello
可以看出,ES6 的写法比 ES5 简洁许多,而且方便阅读
function foo({x, y = 5}) {
console.log(x, y)
}
foo({}) // undefined 5
foo({x: 1}) // 1 5
foo({x: 1, y: 2}) // 1 2
foo() // TypeError: Cannot read property 'x' of undefined
上面代码只使用了对象的解构赋值默认值,没有使用函数参数的默认值,所以 foo() 会报错,这个问题可以通过设置函数参数的默认值来解决
function foo({x, y = 5} = {}) {
console.log(x, y);
}
foo() // undefined 5
本文转载自 http://es6.ruanyifeng.com/#docs/function#函数参数的默认值 并进行整理