是否有任何干净的方法可以为函数指定默认值,如果它的任何参数都是假的。
我知道您可以执行类似
的操作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);
}
或者是否有我错过的模式
答案 0 :(得分:2)
您的代码是您所希望的最佳代码。
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