Javascript 处理虚假的论点
如果函数的任何参数都是错误的,那么有没有干净的方法为函数指定默认值 我知道你可以做类似的事情Javascript 处理虚假的论点,javascript,Javascript,如果函数的任何参数都是错误的,那么有没有干净的方法为函数指定默认值 我知道你可以做类似的事情 function addSomething(element, someArr = []) { someArr.push(element); } 但是,如果第二个参数为null,您将得到一个null的“cannotreadproperty‘push’” 我希望下面的方法能奏效 function addSomething(element, someArr || []) { someArr.push
function addSomething(element, someArr = []) {
someArr.push(element);
}
但是,如果第二个参数为null,您将得到一个null的“cannotreadproperty‘push’”
我希望下面的方法能奏效
function addSomething(element, someArr || []) {
someArr.push(element);
}
所以我留下来做方法内部的检查?
function addSomething(element, someArr) {
someArr = someArr || [];
someArr.push(element);
// OR
someArr && someArr.push(element);
}
或者是否有我错过的模式您的代码是您所希望的最好的。
function addSomething(element, someArr || []) {
someArr.push(element);
}
null
与数组不同,因此如果将其显式传递到函数中,则应:
- 大声失败,因为程序中有错误。您需要一个数组,但得到了空值
- 优雅地处理它,因为您希望同时允许
null
function addSomething(element, someArr: any[]|null)
你必须明确承认这一事实。即使是最后一种方法也不是100%安全的:
函数addSomething(元素,someArr){
someArr&&someArr.push(元素);
}
添加一些东西(“测试”、“foobar”)代码>不,这是相当重要的。如果你关心的是当你有更多的参数,并且你想要避免中间的一个,你可以总是调用你的函数用“代码>未定义的< /代码>而不是NULL。”KAIIDO问题是,它将是数据或NULL,将传递给函数。API调用时,我可以在将变量传递给函数之前检查它们,但我希望函数本身是“安全的”并且失败。我喜欢默默地失败。这是真的,很好的一点。我只关心null,因为如果API调用失败,我会得到null。因此arg要么始终为null的arr。但是,如果有人试图把一个字符串,它当然会失败。但是Array.isArray(someArr)更好,因为我希望函数更健壮。很快会将此标记为例外答案,也希望看到其他意见。。。但基本上我应该做>someArr=Array.isArray(someArr)| |[]代码>(我在该函数中多次使用数组方法)看起来它不起作用。请添加一个工作示例。如果在参数内部使用someArr=someArr | |【】
,则会出现错误use-before-declaration
,同时考虑到PeterMander的答案,这看起来不像是“您所能期望的最好结果”,问题没有提及TypeScript;你在答案中的打字脚本只是模糊了这一点。OP对一种允许他们跳过所有代码的语言功能感兴趣。没有,因此他们必须手工编写代码。@NinaScholz它在浏览器控制台中工作。就算它不是好代码,一个linter等应该标记它,但它会工作的