在Javascript中,我们通常判断一个变量是否存在(即不为null
或者undefined
),往往是这样判断的
if(tomy){ console.log(obj.name); }
这种写法在大部分情况下都没问题,但是在有的情况下就会很坑,比如:
空字符串
if(tomy.address){ //tomy.address='' console.log(tomy.address); }else{ console.log("the obj tomy need address property"); }
我们的本意是判断tomy是否有address
这个属性,结果是有address
属性的,只是值为'’
(啥都没有,空字符串),结果就被js引擎解析为布尔值false
,和本意不符。
数字0
var config={}; if(minValue){ //minValue=0; config.minValue=minValue; }
我们的本意是判断是否传了minValue,如果有就赋值,结果是有传minValue
属性的,只是值为0
,结果就被js引擎解析为布尔值false
,变成了没有传minValue
这个属性。和本意不符。
布尔值
if(tomy.canWork){ //tomy.canWork=false; //do work }
我们的本意是判断tomy是否有canWork
这个属性,结果是有canWork
属性的,只是值为false
,结果就会和本意不符。
结论
因此我们要判断一个变量是否存在,应该这样写才是比较好的,也方便后期维护。
//封装为一个方法 const isNullOrUndefined=obj=>obj===null || obj === undefined; var config={}; if(!isNullOrUndefined(minValue)){ config.minValue=minValue; }
https://www.cnblogs.com/DHclly/p/9782328.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/112629.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...