ES6 之函数参数的默认值

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#函数参数的默认值 并进行整理

除特殊说明外本人博客均属原创,转载请注明出处:http://blog.johnhan.cn/blog_1026.html
鄂ICP备17018604号-1  鄂公网安备42060702000030号