javascript - "do this or throw an error"的简明语法

标签 javascript

一个常见的习语是 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() 中的错误。

如果这是一个选项,您可以考虑重新设计 barfoo 以抛出错误本身。

关于javascript - "do this or throw an error"的简明语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40540921/

相关文章:

javascript - TSC:--target ES3 兼容性标志有什么作用?

php - php中的页面 session ,我想存储用户在特定页面上花费的时间...?

javascript - JQuery show() 方法没有按预期工作

java - 需要在 chrome 浏览器上阻止 "This page has insecure content"消息?

javascript - 函数传递参数

javascript - 来自另一个文件的模型返回值不适用于 Sequelize.js

javascript - 如何为 'Required If' 场景编写 Angular 指令?

javascript - mapbox gl js - 未捕获的类型错误 : Cannot read property 'classList' of null

javascript - 添加幻灯片切换

javascript - JavaScript中如何处理 float 精度?