ES6 允许为函数的参数设置默认值,直接将默认值写在参数定义的后面。
一.函数参数默认值
1.基本使用
-
ES6 可以为函数的参数设置默认值。
//普通函数 function log(x, y = 'World') { console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello //构造函数 function Point(x = 0, y = 0) { this.x = x; this.y = y; } const p = new Point(); p // { x: 0, y: 0 }
①.特点 - ES6新特性,与ES5相比
-
在ES5中参数是不可以赋默认值,若想实现相同效果,如下
function log(x, y) { y = y || 'World'; console.log(x, y); } log('Hello') // Hello World log('Hello', 'China') // Hello China log('Hello', '') // Hello World
-
上述范例存在,’'也会被判定为false错误,所以还需要判断一下类型
if (typeof y === 'undefined') { y = 'World'; }
②.特点 - 参数不可重新使用let
和const
重复声明
-
参数变量是默认声明的,所以不能用let或const再次声明。
// 不报错 function foo(x, x, y) { // ... } // 报错 function foo(x, x, y = 1) { // ... } // SyntaxError: Duplicate parameter name not allowed in this context
③.特点 - 与解构赋值默认值结合使用
-
参数默认值可以与解构赋值的默认值,结合起来使用。
//一. 未使用参数默认值只使用解构默认值 function foo({ x, y