js 中 0 和 null "" 的逻辑关系

Posted nzplearnsite

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 中 0 和 null "" 的逻辑关系相关的知识,希望对你有一定的参考价值。

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

问题描述:非空判断,只是校验传值的内容是否为""、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。

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

 

以上是关于js 中 0 和 null "" 的逻辑关系的主要内容,如果未能解决你的问题,请参考以下文章

在js中if条件为null/undefined/0/NaN/""表达式时,统统被解释为false,此外均为true哦。。。(官方原文如下:)

js undefined 与空字符串怎么比较

js,代码中"object"和"Object"区别?

到底是用0表示NULL,还是用NULL表示0

如何js数组删除一个对象

js 如何同时判断 某个变量不是 undefined 也不是 null也不是 空啊