一个常见的习语是 javascript 和其他类似 c 的语言是使用这样的逻辑“或”运算符:
function f(x) {
return (foo(x) || -1);
}
如果 foo(x) 返回 null(或零,或空字符串),则返回 -1。
如果我不想返回一个不同的值,而是想抛出一个错误呢? throw
是关键字,不是函数,所以不能用在||
的右边。基本上我想这样做:
function foo(x) {
result = bar(x);
if(result) {return result;}
throw "bar(x) didn't return a value";
}
可以使它更简洁(并且减少冗余)吗?
最佳答案
理论上是可以的
function f(x) {
return foo(x) || (() => { throw "foo(x) didn't return a value"; })();
}
或类似的东西,但您的原始代码没有任何问题。
你也可以试试
function error(x) { throw x; }
function f(x) { return foo(x) || error("foo(x) didn't return a value"); }
虽然这会报告发生在 error()
中的错误。
如果这是一个选项,您可以考虑重新设计 bar
或 foo
以抛出错误本身。
关于javascript - "do this or throw an error"的简明语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40540921/