JS函数参数值校验

ES6中,为函数增加了参数默认值的特性,可以为参数设定一些默认值,可以让代码更简洁,可维护。

其实,我们可以通过这个特性来做函数参数值的校验。

首先,函数的参数可以是任意类型的值,也可以是函数,比如下面这个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function 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
13
function fix(a = require()) {
console.log('a', a)
}

function require() {
throw new Error('缺少了参数 a')
}

fix(1);
// a 1

fix();
// Uncaught Error: 缺少了参数 a