!! 检查javascript中未定义的布尔值
这里我们确实有x的值“false”,因此定义了它。这里的问题是,检查未定义是否正确 如果您只想拒绝!! 检查javascript中未定义的布尔值,javascript,Javascript,这里我们确实有x的值“false”,因此定义了它。这里的问题是,检查未定义是否正确 如果您只想拒绝未定义的,最好使用: var x = false; if (!!x) { // syntactic sugar for x ! =undefined alert('I will not be shown'); } 因为,!!x将忽略其他值,如x=false/x='。简单的真理测试,您可以使用: if (typeof x !== "undefined") { // code } 对
未定义的
,最好使用:
var x = false;
if (!!x) { // syntactic sugar for x ! =undefined
alert('I will not be shown');
}
因为,!!x
将忽略其他值,如x=false
/x='
。简单的真理测试,您可以使用:
if (typeof x !== "undefined") {
// code
}
对于
未定义的
(或您正在检查的非未定义的
),最广泛使用的检查可能是:
正如(我认为)您已经注意到的,您的测试将为任何错误生成一个
true
值,换句话说,对于null
,undefined
,0
,“
,false
,和NaN
,NaN
,,这些都是毫无意义的
if (typeof x !== "undefined") {
console.log("x is defined");
}
相对于
if (!!x)
作为由执行的布尔转换
与if
语句的作用完全相同
代码>“技巧”在您想要强制布尔转换并保留结果时非常有用:
if (x)
之后,变量xIsTruthy
将包含true
或false
当然,
var xIsTruthy = !!x;
当x
不是undefined
、null
、0
、”
、false
或NaN
时,将成功。有时这没关系,因为您知道x
应该是,例如,nothing或object引用。但是,如果您需要更具体的测试,则必须明确地编写。这取决于您是接受还是拒绝!!“
和类似的。例如,typeof(x)!”“未定义”
?!!x
不是“x!=未定义的语法糖”。你在哪里听到的?抱歉,我才意识到不是这样的。所以我认为最好的检查方法是(typeof x!=“undefined”)。。。。谢谢“轨道”:
var xIsTruthy = !!x;
if (x)