簡單方法判斷JavaScript對象為null或者屬性為空
首先說下null與undefined區(qū)別:
對已聲明但未初始化的和未聲明的變量執(zhí)行typeof,都返回"undefined"。
null表示一個空對象指針,typeof操作會返回"object"。
一般不顯式的把變量的值設(shè)置為undefined,但null相反,對于將要保存對象的變量,應(yīng)明確的讓該變量保存null值。
var bj; alert(bj); //"undefined" bj = null; alert(typeof bj); //"object" alert(bj == null); //true bj = {}; alert(bj == null); //false
下面兩個函數(shù)是鄧師兄給我的,感謝啊。
/* * 檢測對象是否是空對象(不包含任何可讀屬性)。 * 方法既檢測對象本身的屬性,也檢測從原型繼承的屬性(因此沒有使hasOwnProperty)。 */ function isEmpty(obj) { for (var name in obj) { return false; } return true; };
這里所說的空對象,到底是 {} 還是 null . 我寫了一個測試用例。
var a = {}; a.name = 'realwall'; console.log(isEmpty(a)); //false console.log(isEmpty({})); //true console.log(isEmpty(null)); //true //注意參數(shù)為null時無語法錯誤哦,即雖然不能對null空指針對象添加屬性,但可以使用for in 語句 ? /* * 檢測對象是否是空對象(不包含任何可讀屬性)。 * 方法只既檢測對象本身的屬性,不檢測從原型繼承的屬性。 */ function isOwnEmpty(obj) { for(var name in obj) { if(obj.hasOwnProperty(name)) { return false; } } return true; };
{}與null的區(qū)別:
這個東西很重要。
var a = {}; var b = null; a.name = 'realwall'; b.name = 'jim'; //這里會報錯,b為空指針對象,不能像普通對象一樣直接添加屬性。 b = a; b.name = 'jim'; //此時 a 和 b 指向同一個對象。a.name, b.name 均為'jam'
相關(guān)文章
javascript的alert box在java中如何顯示多行
這篇文章主要介紹了javascript的alert box在java中如何顯示多行,需要的朋友可以參考下2014-05-05JavaScript實現(xiàn)將Word文檔解析成瀏覽器認識的HTML
這篇文章主要為大家詳細介紹了如何使用JavaScript實現(xiàn)將Word文檔解析成瀏覽器認識的HTML,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2024-02-02微信小程序?qū)崙?zhàn)之頂部導(dǎo)航欄(選項卡)(1)
這篇文章主要為大家詳細介紹了微信小程序?qū)崙?zhàn)之頂部導(dǎo)航欄的相關(guān)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04