繁体   English   中英

!! 语法糖来检查javascript中未定义的布尔值

[英]!! sytactic sugar to check undefined in javascript for boolean values

var x = false;

if (!!x) { // syntactic sugar for x ! =undefined
    alert('I will not be shown');
}

在这里,x确实具有值“ false”,因此已定义。 这里的问题是检查未定义的正确方法吗?

如果您只想拒绝undefined则最好使用:

if (typeof x !== "undefined") {
   // code
}

因为!!x会忽略x = false / x = ''类的其他值。 进行真相测试很简单,可以使用:

if (x) { ... }

真的没有意义

if (!!x)

相对于

if (x)

作为由!执行的布尔转换 无论如何, if语句将完全相同。

!! 当您想强制进行布尔转换并保留结果时,“技巧”很有用:

var xIsTruthy = !!x;

之后,变量xIsTruthy将包含truefalse

当然,

if (x)

如果xundefinednull0""falseNaN以外的其他null ,则将成功。 有时这样就可以了,因为您知道x应该是什么,例如什么都不是或对象引用。 但是,如果您需要更具体的测试,则必须明确编写该测试。

undefined (或undefined ,这就是您要检查的)最广泛使用的检查可能是:

if (typeof x !== "undefined") {
    console.log("x is defined");
}

正如(我认为)您已经注意到的那样,对于任何虚假的东西,换句话说,对于nullundefined0""falseNaN ,您的测试都会产生一个true值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM