在ES6
中,为函数增加了参数默认值的特性,可以为参数设定一些默认值,可以让代码更简洁,可维护。
其实,我们可以通过这个特性来做函数参数值的校验。
首先,函数的参数可以是任意类型的值,也可以是函数,比如下面这个:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15function fix(a = getA()) {
console.log('a', a)
}
function getA() {
console.log('get a')
return 2
}
fix(1);
// a 1
fix();
// get a
// a 2
可以看出,如果在调用fix
时传了参数
a,则不会执行函数
getA
,只有当不传递参数a
时,才会执行函数getA
。
这时候,我们可以利用这一特性,为参数a
添加一个必传的校验,代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13function fix(a = require()) {
console.log('a', a)
}
function require() {
throw new Error('缺少了参数 a')
}
fix(1);
// a 1
fix();
// Uncaught Error: 缺少了参数 a