什么是相当于Ruby的“除非”?

时间:2016-09-30 20:52:48

标签: javascript underscore.js

Ruby有一个方便的unless条件,这是“if的负面等价物”。

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

3 个答案:

答案 0 :(得分:2)

不,没有这样的控制结构。为了使代码更具可读性,你可以做的一件事就是在函数中包含否定。

 function baconIsTooThin () {
    return !baconIsChunky();
 }

 if (baconIsTooThin()) { 
   ...
 } 

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

Example

// CoffeeScript
unless (foo) 
  alert('bar')

// Compiled JavaScript
if (!foo) {
 alert('bar');
}

答案 1 :(得分:2)

这是黑客:P

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

答案 2 :(得分:1)

JavaScript中没有这样的声明。我相信这个结构很接近:

a || (_ => {
    console.log('a is false');
})();



let a = false;
a || (_ => {
    console.log('a is false');
})();




显然这没有实际意义,除非你想让你的代码不那么可读。正常if (!a)是要走的路,或者 - 在第二位 - if (a); else