javascript中判斷變量是否存在的正確方式


在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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM