上下文
我经常在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)
似乎太明显了,我不确定这里有没有关于未定义,空行为的陷阱......
答案 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,
}
- 让exprValue为ToBoolean(GetValue(exprRef))。
醇>
因此,布尔值的转换是表达式发生的第一件事。
您也可以将相同的内容应用于单个变量。
修改强>
解释评论中的问题
&#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
任何真实案件的否定总是给出错误的,否定任何虚假案件总是给出真实的。