Javascript “的简明语法”;执行此操作或抛出错误“;
一个常见的习惯用法是javascript,其他类似c的语言使用逻辑“or”运算符,如下所示:Javascript “的简明语法”;执行此操作或抛出错误“;,javascript,Javascript,一个常见的习惯用法是javascript,其他类似c的语言使用逻辑“or”运算符,如下所示: function f(x) { return (foo(x) || -1); } 如果foo(x)返回null(或零,或空字符串),则返回-1 如果不是返回不同的值,而是要抛出错误,该怎么办throw是一个关键字,不是函数,因此不能在|的右侧使用。基本上我想这样做: function foo(x) { result = bar(x); if(result) {return re
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 throw_on_bad(f) {
var result = f();
if (result) {
return result;
} else {
throw "Passed function didn't return a value";
}
}
throw_on_bad(function() {
return bar(x));
});
或使用ES6:
throw_on_bad(() => bar(x));
可能返回错误结果的函数被包装在另一个函数中以延迟执行。如果bar
不接受任何参数,则可以简单地编写为:
throw_on_bad(bar);
没有宏,它就不会比理论上你能做的简单得多
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 <代码>或<代码> fo,以引发错误本身。