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

问题描述 投票:2回答:2

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

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

javascript underscore.js
2个回答
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
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.