【问题标题】:Does (!value) Evaluate as True for All Falsy Values?(!value) 是否对所有虚假值都评估为真?
【发布时间】:2023-04-03 08:35:01
【问题描述】:

我明白了

if( value ) {

}

如果值不为 null、未定义、NaN、空字符串 ("")、0 或 false,则计算结果为 true

但是,确实 if (! value ) {} 如果值为 null、未定义、NaN、空字符串 ("")、0 或 false,则评估为 true?

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

我想使用这段代码,只要它做我认为它做的事情:

if (! value ) {value = ""}

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

【问题讨论】:

    标签: javascript google-apps-script google-sheets boolean


    【解决方案1】:

    简而言之,是的

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

    因此,换句话说,如果您想要相反的布尔值,只需添加 ! 如果您想要实际值的布尔值,请添加 !!

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

    【讨论】:

      【解决方案2】:

      是的,这些将评估为真:

      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!
      

      【讨论】:

        猜你喜欢
        • 2018-07-01
        • 2016-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多