javascript 和其他类似 c 的语言的一个常见习惯用法是使用逻辑“或”运算符,如下所示:
function f(x) {
return (foo(x) || -1);
}
Run Code Online (Sandbox Code Playgroud)
如果 foo(x) 返回 null(或零,或空字符串),则返回 -1。
如果我不想返回不同的值,而是想抛出错误怎么办?throw是一个关键字,而不是一个函数,所以它不能用在 的右侧||。基本上我想这样做:
function foo(x) {
result = bar(x);
if(result) {return result;}
throw "bar(x) didn't return a value";
}
Run Code Online (Sandbox Code Playgroud)
可以变得更简洁(并且更少冗余)吗?
小智 3
理论上你可以做
function f(x) {
return foo(x) || (() => { throw "foo(x) didn't return a value"; })();
}
Run Code Online (Sandbox Code Playgroud)
或类似的东西,但你的原始代码没有任何问题。
你也可以尝试
function error(x) { throw x; }
function f(x) { return foo(x) || error("foo(x) didn't return a value"); }
Run Code Online (Sandbox Code Playgroud)
尽管这会报告内部发生的错误error()。
如果可以的话,您可以考虑重新设计bar或foo自行抛出错误。
| 归档时间: |
|
| 查看次数: |
988 次 |
| 最近记录: |