null和undefined
JavaScript有5種簡單資料型別(基本資料型別)和1種復雜書資料型別;
- 基本資料型別:
Undefined,nul,Boolean,Number,String; - 復雜資料型別:
Object;
以下比較一下兩種表示空值的資料型別,null 和 undefined,
1.null
null表示一個特殊值,常用來描述"空值",
對null執行typeof操作,結果回傳字串"object" ,null可以認為是一個特殊的物件值,含義是非物件,
從邏輯上看,null 表示一個空物件指標,
let dog = null;
console.log(typeof(dog)); // object
-
實際上,通常認為null是它自有型別的唯一一個成員,可以表示 數字 , 字串 ,物件 是 無值的,
-
如果定義的變數準備在將來用于保存物件,最好將該變數初始化為
null,而不是其他值.這樣一來,只要直接檢查null值就知道相應的變數是否已經保存了一個物件的參考,
if(car!=null)
{
//對car物件執行某些操作
}
2.undefined
undefined 也被用來表示值的空缺,表示未定義,undefined 值表示更深層次的"空值".所有不存在的值,都表示為 undefined,
它是變數的一種取值,表明變數沒有初始化,如果宣告了一個變數,但未對其進行初始化時,則該變數的型別就是 undefined,如下:
let a;
console.log(typeof(a));//undefined
不對變數進行初始化和將變數初始化為 undefined ,其結果是一致的,如下:
let b;
console.log(typeof(b));
let c = undefined;
console.log(typeof(b)==typeof(c) ? true : false);//true
一般而言,不需要顯式的把一個變數的值設定為
undefined,該值的引入主要是為了區分 空物件指標 和 未經初始化的變數.
未定義的變數和定義但未初始化的變數的型別都是 undefined,
let c; //未初始化
//d d未定義
console.log(typeof(c));//undefined
console.log(typeof(d));//undefined
console.log(c);//undefined
console.log(d);//出錯
即便未初始化的變數會被自動賦予undefind值,但顯式的初始化變數依然是更好的選擇和習慣,如果能做到這一點,那么當typeof回傳
undefined時,我們就知道被檢測的變數還沒有被宣告(即不存在),而不是尚未扯訓,
let e = null;
//f不存在
console.log(typeof(e));//object
console.log(typeof(f));//undefined
3.null和undfined的聯系和區別
undefined值 是派生自null值的,兩者 在==下是相等的,但在===(嚴格相等)下是不相等的,
console.log(null == undefined ? true:false);//true
console.log(null === undefined ? true:false);//false
null是一個 object,是存在的,undefined是未定義,表示的是不存在的某個東西,
4 參考資料
- 《JavaScript 高級程式設計》
- 《JavaScript 權威指南》
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/14861.html
標籤:JavaScript
上一篇:前端面試 vue 部分 (5)——VUE組件之間通信的方式有哪些
下一篇:使用Cookie 臨時存值
