处理虚假的论点

时间:2017-06-09 07:55:56

标签: javascript

是否有任何干净的方法可以为函数指定默认值,如果它的任何参数都是假的。

我知道您可以执行类似

的操作
function addSomething(element, someArr = []) {
  someArr.push(element);
}

但如果第二个参数为null,那么你就不会处理它,然后你会得到一个“无法读取属性'推送'的null”。

我希望以下内容有效

function addSomething(element, someArr || []) {
  someArr.push(element);
}

...

所以,我在方法内部进行检查了吗?

function addSomething(element, someArr) {
  someArr = someArr || [];
  someArr.push(element);
  // OR
  someArr && someArr.push(element);
}

或者是否有我错过的模式

2 个答案:

答案 0 :(得分:2)

您的代码是您所希望的最佳代码。 null与数组不同,因此如果您明确地将其传递给函数,它应该:

  • 因为程序中存在错误而大声失败。你想要一个数组并获得一个null。
  • 优雅地处理它,因为您也想允许null

我想你想要第二种情况。使用TypeScript注释,此函数可能如下所示:

function addSomething(element, someArr: any[]|null)

你被迫明确承认这一事实。

答案 1 :(得分:1)

即使你的最后一种方法也不是100%安全:



function addSomething(element, someArr) {
  someArr && someArr.push(element);
}
addSomething('test', 'foobar');




您必须检查参数是否为数组:



function addSomething(element, someArr) {
  Array.isArray(someArr) && someArr.push(element);
}
addSomething('test', 'foobar'); // fails silently