
在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