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。

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

原文地址:https://www.cnblogs.com/nzplearnSite/p/10017821.html

时间: 2024-11-03 01:42:12

js 中 0 和 null 、"" 的逻辑关系的相关文章

160304-02、JS 中如何判断null 和undefined

JavaScript 中有两个特殊数据类型:undefined 和 null,下节介绍了 null 的判断,下面谈谈 undefined 的判断. 以下是不正确的用法: var exp = undefined;if (exp == undefined){    alert("undefined");} exp 为 null 时,也会得到与 undefined 相同的结果,虽然 null 和 undefined 不一样.注意:要同时判断 undefined 和 null 时可使用本法.

JS中NaN、null、Undefined区别

1.NaN(not a number)非数字.不和任何数字相等,包括自己本身,可以用isNaN()判断,当praseInt()和praseFloat()不能解析时返回NaN.NaN为number对象下的一个属性,number.NaN typeof(NaN)   //return number NaN == NaN   //return FALSE 2.null 表示尚未存在的对象, 3.undefined表示尚未初始化   var a:alert(a)  //return undefined 在

为什么JS中0.1+0.2 != 0.3

原文:为什么JS中0.1+0.2 != 0.3 为什么JS中0.1+0.2 != 0.3 在我曾经的一篇< javascript入门教程 (2) >中,讲到JS中数字运算时,我们提到过一个叫做 数字运算中的精度缺失的问题,当时我们只是简单说了下,并未对其原因做了解.这篇文章,我就带着大家了解下 JS运算中精度的缺失问题. 首先我们先来看一个例子 console.log(0.1 + 0.2) // 结果是0.30000000000000004,而不是3 这里0.1 + 0.2 != 0.3 这个

JS中undefined、null以及NaN之间的区别,以及对象属性赋值的面试题

(1)以下三种情况typeof 返回类型为undefined --当变量未初始化时 --变量未定义时 --函数无明确返回值时(函数没有返回值时返回的都是undefined) (2)Null 类型 undefined 是由null派生处理的,因此undefined == null undefined 是声明了但是没有初始化的该变量, null表示尚未存在的对象 . (3)NaN 值 是一个特殊值,表示非数(Not a Number),类型转换失败就会返回NaN --NaN 不等于自己,即 NaN

JS中如何判断null、undefined与NaN

1.判断undefined: Js代码   <span style="font-size: small;">var tmp = undefined; if (typeof(tmp) == "undefined"){ alert("undefined"); }</span> 说明:typeof 返回的是字符串,有六种可能:"number"."string"."boolean&

JS中undefined与null的区别

1.概述: 在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? 有人说这两个返回值,没有什么区别,只是历史遗留问题罢了,其实还是有一点区别的. 2.null和undefined的发展史: 大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil. 有点奇怪的是,Ja

JS中undefined与null的区别,附带产生undefined的历史

大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil. 有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null.这是为什么? 一.相似性 在JavaScript中,将一个变量赋值为undefined或null,老实说,几乎没区别. var a = undefined; var a = null; 上面代码中,a变量分别被赋值为undefin

php中0,空,null和false之间区别

$a = 0; $b="0"; $c= ''; $d= null; $e = false; echo "5个变量-原始测试类型"; var_dump($a);//int 0 var_dump($b);//string '0' var_dump($c);//string '' var_dump($d);//null var_dump($e);//boolean false echo "<h4>empty测试</h4>"; v

区分JS中的undefined,null,&quot;&quot;,0和false

在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库 字段的空值DBNull,boolean类型的假值false等等.在JavaScript中也有很多种的"空值"和"假值",那么它们都有什么共同点和 不同点呢? 其实标题里面我已经列出了JavaScript中所有的"空值"和"假值",除了boole