0%

javascript-refactor-use-default-argument-instead-of-or

使用默认参数代替||运算

不知道大家是否见到过如下这样的代码。

1
2
3
4
function foo(userList: string[]) {
const users = userList || [];
return users.map(user => user.toUpperCase());
}

这段代码中使用|| []进行了一种防御性编程,因为传入的userList可能是undefined。使用|| []以后,就可以避免在undefined上调用map函数出错,其实我们可以使用javascript的默认参数来实现这个功能。

1
2
3
function foo(userList: string[] = []) {
return userList.map(user => user.toUpperCase());
}

需要注意的是,默认参数只能处理undefined, 对于null或其他假值(如0''等)是无法替代的。因此在使用默认参数时,需要确保传入的参数是undefined。否则还是用||比较保险一些。