JavaScript与Ruby的“除非”等效吗?

Cho*_*tom 5 javascript underscore.js

Ruby有一个方便的用法,除非有条件,即“ if的负数”。

有没有办法在JavaScript中做比语义更“否定的” if (!condition)

小智 8

这是黑客:P

let unless = (condition,callback)=>{!condition && callback();}
let a = 10;
let b = 20;
unless(a > b,()=>{console.log("A should be greater than B")})
Run Code Online (Sandbox Code Playgroud)


Pat*_*ney 7

不,不存在这样的控制结构。为了使代码更具可读性,您可以做的一件事是将否定包装在函数中。

\n
 function baconIsTooThin () {\n    return !baconIsChunky();\n }\n\n if (baconIsTooThin()) { \n   ...\n } \n
Run Code Online (Sandbox Code Playgroud)\n

或者您可能想使用CoffeeScript,它使 JavaScript 看起来更像 Ruby (并且具有unless)并编译为纯 JavaScript。

\n

例子

\n
// CoffeeScript\nunless (foo) \n  alert(\'bar\')\n\n// Compiled JavaScript\nif (!foo) {\n alert(\'bar\');\n}\n
Run Code Online (Sandbox Code Playgroud)\n

编辑 2022:不要\xe2\x80\x99t 使用 CoffeeScript,它没有\xe2\x80\x99t 流行起来,而且现在没有人使用它。JS 仍然没有并且可能永远不会有unless

\n