在javascript中if(变量)的确切否定是什么?

时间:2016-04-16 08:06:56

标签: javascript

上下文

我经常在javascript程序中看到以下条件语句:

if (myVariable){
....
}

正如我所理解的那样,它会对undefined和null进行测试,但我不知道还有什么,我想对布尔值假...

理论上如果我想写完全否定我可以写

if (myVariable){
   // dummy empty
}
else{
   // My conditional code here
}

问题

以下最简单的形式,上述代码的确切等价物是什么?

if (<what to write here using myVariable>){
     // My conditional code here
}

答案if (!myVariable)似乎太明显了,我不确定这里有没有关于未定义,空行为的陷阱......

6 个答案:

答案 0 :(得分:4)

!否定陈述!false === true

if (!myVariable){
   // My conditional code here
}

它实际上否定了所有非真实值,所以!null === true也是如此。

答案 1 :(得分:3)

if (!Boolean(myVariable))
{  
  //logic when myVariable is not 0, -0, null, undefined, false,  
}

检查此specthis

  
      
  1. 让exprValue为ToBoolean(GetValue(exprRef))。
  2.   

因此,布尔值的转换是表达式发生的第一件事。

您也可以将相同的内容应用于单个变量。

修改

解释评论中的问题

  

&#34;!myVariabla&#34;表达式正在评估

它将首先根据规范中给出的表格将表达式强制转换为布尔值,然后将其否定。

答案 2 :(得分:1)

!(!!myvar)

否定其Boolean()值;

在现实生活中使用!myvar就足够了,但是例如:

console.log(NaN !== NaN)

产生不同的结果:

console.log(!!NaN !== !!NaN)

只要您知道强迫类型是如何安全的!

答案 3 :(得分:0)

你可以使用它。

if (typeof myVariable !="undefined" && myVariable !="" && myVariable !=null) {
    // your code
} else {
    // your code
}

答案 4 :(得分:0)

if (typeof myVariable===undefined|| !myVariable){
     // My conditional code here
}

应该这样做,它将运行undefined以及null&amp;否定myVariable。

答案 5 :(得分:0)

myVariable适用于:boolean true,任何非空字符串,任何非零数字,任何数组(包括空数组),任何对象(包括空对象)

对于null和未定义的变量,

myVariable为false

任何真实案件的否定总是给出错误的,否定任何虚假案件总是给出真实的。