js中怎麼判斷未定義的對象

摘要:1、今天在公司遇到一個問題?有一個頁面是幾個人在共用,而這個頁面我們做的是彈出窗口,可以用到父頁面加載好的一些對象。
2、其中一同事不知道其他人在用,就在公用的頁面上面加了只有他頁面纔有的對象。
3、今天測試人員告訴我頁面報錯了;然後我打開調試工具,發現控制檯報錯了,“not find variable “xxx””;
4、然後就加了判斷結果還是報錯;判斷的代碼如下

// 這是我們判斷是寫的方法
function isEmpty(obj){
    if(typeof obj == "undefined" || obj == null || obj == ""){
        return true;
    }else{
        return false;
    }
}

// 下面是對公共頁面判斷
if(!isEmpty(xx) && xx.yy){
    // 我的本意是判斷這個對象是否存在,如果存在才繼續執行後面的代碼
}

// 改用另外的方式判斷
if(typeof xx != "undefined" && xx.yy){
    // 這樣是可以執行的
}

分析如下:

傳值:只是將變量的值傳入函數,函數會另外配置內存保存參數值,所以並不會改變原變量的值。

傳址:***將變量實際保存的內存位置傳入函數***,所以如果在函數中變更參數的值,也會同時變動原參數的值。

數字、字符串和布爾----傳值

對象、數組和函數----傳址

字符串對象-------傳址

1、如果把未定義的對象當作參數傳遞–相當於傳址,就會去取變量實際保存的位置,但是變量根本沒有聲明/定義,內存中是找不到的,所以就報 not find vairable;
2、至於typeof 爲什麼可以判斷,個人認爲它應該是在window對象下面去找的。(後面解決)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章