分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

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

发布时间:2023-09-06 02:24责任编辑:沈小雨关键词:js

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

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

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved