Javascript不大于0

fc1*_*123 19 javascript if-statement

如何检查是否值是大于0在JavaScript?

我试过了

if(!a>0){}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Mur*_*nik 64

你需要第二组括号:

if(!(a>0)){}
Run Code Online (Sandbox Code Playgroud)

或者,更好但"不大于"与说"小于或等于"相同:

if(a<=0){}
Run Code Online (Sandbox Code Playgroud)

  • @Mureinik:`!(>)`如果`a`为null/undefined,则与`<=`不同. (11认同)
  • 注意,如果`a`是数字,则两个`if`语句是相同的.`tempStr ="asdasdasd"; !(tempStr> 0)// true; tempStr <= 0 // false;` (2认同)

小智 10

Mureinik的答案是完全正确的,但看作"理解虚假的价值观"是JavaScript中更重要,更不直观的部分之一,或许值得解释一下.

没有第二组括号,要评估的语句

!a>0
Run Code Online (Sandbox Code Playgroud)

实际上被评估为

(!a) > 0
Run Code Online (Sandbox Code Playgroud)

那么(!a)意味着什么?这意味着,找到"a"的布尔真值并翻转它; 真实变为虚假,虚假变为真实."a"的布尔真值意味着 - 如果它有一个被认为是"假"的值,那么它就是假的.在所有其他情况下,即对于"a"的所有其他可能值,它是"真".假名值是:

false
0 (and -0)
"" (the empty string)
null
undefined
NaN (Not a Number - a value which looks like a number, but cannot be evaluated as one
Run Code Online (Sandbox Code Playgroud)

因此,如果a具有任何这些值,则为false并且!a为true如果它具有任何其他值,则为真,因此!a为false.

然后,我们尝试将其与0进行比较.如我们所知,0和0也可能是"假的",因此您的比较也是如此

if (true > false) {}
Run Code Online (Sandbox Code Playgroud)

要么

if (false > false) {}
Run Code Online (Sandbox Code Playgroud)

看起来既不是真的也不是假的,除了等于假之外(它们不能大于或小于!),你的"if"将永远失败,并且括号内的代码永远不会被评估.

  • 很好的答案。只是:`true &gt; 0` 或 (`true &gt; false`) 实际上在 JavaScript 中产生 `true`,所以你的最后一个语句(“它们不能大于或小于”)是错误的。 (2认同)