zoukankan      html  css  js  c++  java
  • js 中 0 和 null 、"" Boolean 值关系

    在做字符串非空判断时,无意发现一个问题,记录下以便以后回顾。

    问题描述:非空判断,只是校验传值的内容是否为""、null 、undefined。当变量 赋值的字符串内容为 0,此时做非空校验竟然返回true,说当前变量值为空。

    代码如下:

     1 //模拟赋值 0
     2 var str = "0";
     3 
     4 /**
     5  * 判断字符是否为空的方法
     6  * 为空 返回 true
     7  * 不为空返回 false
     8  * @param {Object} obj
     9  */
    10 function isEmpty(obj){
    11     if(typeof obj == "undefined" || obj == null || obj == ""){
    12         return true;
    13     }else{
    14         return false;
    15     }
    16 }
    17 
    18 function checkStr(){
    19    //模拟返回内容
    20    var msg = "空值,校验失败,请检查校验内容!";
    21 
    22    if(isEmpty(str)){
    23         console.log("str 内容为空,返回默认时间问候语!");
    24         return msg;
    25     }  
    26     
    27     //继续后续逻辑处理......  
    28 }

    在度娘后,查看W3C ,解释参考地址:http://www.w3school.com.cn/js/js_obj_boolean.asp

    有这么一段话:(ps:摘自  http://www.w3school.com.cn/js/js_obj_boolean.asp  JavaScript Boolean(逻辑)对象 文章

     1 注释:如果逻辑对象无初始值或者其值为 0、-0、null、""、false、undefined 或者 NaN,那么对象的值为 false。否则,其值为 true(即使当自变量为字符串 "false" 时)!

    下面的所有的代码行均会创建初始值为 false 的 Boolean 对象。  

    那就能解释的通了,当变量赋值 为0 则 在Boolean 值中就是false,

    因为 undefined、null、"" 在Boolean 值中就也是false,所以在if 逻辑判断 时 就变成了 if(false == false) ,结果 必然就是返回 true。

    也终于解惑了心中疑问。后续工作中就知道这个规则了,就可以避免这个问题的发生了。

  • 相关阅读:
    IL指令详细
    读懂IL代码就这么简单(三)完结篇
    读懂IL代码就这么简单(二)
    读懂IL代码就这么简单(一)
    在 .NET Core Logging中使用 Trace和TraceSource
    使用JWT创建安全的ASP.NET Core Web API
    闭环思维
    一行代码,百万人民币打水漂
    网络接口库函数mpr.dll动态库
    使用MSF利用永恒之蓝漏洞远程控制主机——直接使用MSF即可RCE,我++,在docker里没有完成,GG!
  • 原文地址:https://www.cnblogs.com/nzplearnSite/p/10017821.html
Copyright © 2011-2022 走看看