參數(shù)
ES6允許為函數(shù)的參數(shù)設置默認值
function log(x,y = 'World'){
console.log(x,y)
}
log('Hello') // Hello World
log('Hello','China') // Hello China
log('Hello','') // Hello
函數(shù)的形參是默認聲明的,不能使用let
或const
再次聲明
function foo(x = 5){
let x = 1;//error
const x = 2;//error
}
參數(shù)默認值可以與解構賦值的默認值結合起來使用
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函數(shù),當參數(shù)為對象的時候才能進行解構,如果沒有提供參數(shù)的時候,變量x和y就不會生成,從而報錯,這里設置默認值避免
function foo({x, y = 5} = {}) {
console.log(x, y);
}
foo() // undefined 5
參數(shù)默認值應該是函數(shù)的尾參數(shù),如果不是非尾部的參數(shù)設置默認值,實際上這個參數(shù)是沒發(fā)省略的
function f(x = 1, y) {
return [x, y];
}
f() // [1, undefined]
f(2) // [2, undefined]
f(, 1) // 報錯
f(undefined, 1) // [1, 1]