標籤:script 文法 false pre alert 表示 null 對象指標 javascrip
首先說下null與undefined區別:
對已聲明但未初始化的和未聲明的變數執行typeof,都返回"undefined"。
null表示一個Null 物件指標,typeof操作會返回"object"。
一般不顯式的把變數的值設定為undefined,但null相反,對於將要儲存對象的變數,應明確的讓該變數儲存null值。
var bj;alert(bj); //"undefined"bj = null;alert(typeof bj); //"object"alert(bj == null); //truebj = {};alert(bj == null); //false
下面函數檢測對象是否為空白:
/** 檢測對象是否是Null 物件(不包含任何可讀屬性)。* 方法既檢測對象本身的屬性,也檢測從原型繼承的屬性(因此沒有使hasOwnProperty)。*/function isEmpty(obj){ for (var name in obj){ return false; } return true;};
這裡所說的Null 物件,到底是 {} 還是 null . 下面寫一個測試案例。
var a = {};a.name = ‘realwall‘;console.log(isEmpty(a)); //falseconsole.log(isEmpty({})); //trueconsole.log(isEmpty(null)); //true //注意參數為null時無語法錯誤哦,即雖然不能對nullnull 指標對象添加屬性,但可以使用for in 語句
下面方法判斷對象是否為空白時,只既檢測對象本身的屬性,不檢測從原型繼承的屬性。
/** 檢測對象是否是Null 物件(不包含任何可讀屬性)。* 方法只既檢測對象本身的屬性,不檢測從原型繼承的屬性。*/function isOwnEmpty(obj){ for(var name in obj){ if(obj.hasOwnProperty(name)){ return false; } } return true;};
{}與null的區別:
var a = {};var b = null; a.name = ‘realwall‘;b.name = ‘jim‘; //這裡會報錯,b為空白指標對象,不能像普通對象一樣直接添加屬性。b = a;b.name = ‘jim‘; //此時 a 和 b 指向同一個對象。a.name, b.name 均為‘jam‘
判斷JavaScript對象為null或者屬性為空白