在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