(!value)对所有Falsy值的评估是否为真?

时间:2014-09-21 11:00:10

标签: javascript boolean google-sheets

我理解

if( value ) {

}

如果值IS not null,undefined,NaN,空字符串(“”),0或false

将评估为true

但是,确实如此 if (! value ) {} 如果值为空,未定义,NaN,空字符串(“”),0或false,则求值为true?

我正在使用Google Scripts,我正在从一个电子表格中获取数据,其中一些单元格是空白的。对于那些单元格,我想确保该值返回为“空字符串”,而不是任何其他可能性,例如,undefined,例如(有些正在返回'undefined',这是导致我寻求这个答案的原因)。

我想使用这段代码,只要它符合我的想法:

if (! value ) {value = ""}

(P.S。我从这个帖子开始:Is there a standard function to check for null, undefined, or blank variables in JavaScript?,但答案没有解决相反的情况)

2 个答案:

答案 0 :(得分:1)

简而言之,

使用否定!和双重否定!!强制或将值强制转换为布尔值,这会将所有虚假值转换为false,将所有其他值转换为true,然后只需检查它的真或假就知道它们是布尔值。

所以,换句话说,如果你想要相反的布尔值,如果你想要实际值的布尔值,只需要前置!,前置!!

 !"" === true; //inverted
!!"" === false;//actual

答案 1 :(得分:0)

是的,那些将评估为真:

if(!NaN){console.log('true!');}
true!
if(!undefined){console.log('true!');}
true!
if(!null){console.log('true!');}
true!
if(!''){console.log('true!');}
true!
if(!0){console.log('true!');}
true!