1.在JS中,如果一個變量被聲明了,但沒賦值,則會自動被賦值為undefined; null可以被賦值給一個變量。
- undefined: Undefined類型,當聲明了一個變量未初始化時,得到的就是undefined, 使用typeof運算得到“undefined”
- null: Null類型,表示空值,使用typeof運算得到“object”
總結:如果要嚴格區分是null或者undefined請使用===來區別(見最后的黃色區塊);如果只是籠統的想判斷為null或者undefined,只要簡單用==null(見下面寫法一)或者!null為真來判斷(見下面寫法二)
1)舉例如下:
var firstName; var lastName = null; //隨便弄個不存在的DOM如document.getElementById("phone"),返回值是NULL var phone = document.getElementById("phone"); console.log("firstName: " + firstName);//返回undefined console.log("lastName: " + lastName);// 返回null console.log("phone: " + phone);//返回null console.log("typeof firstName: " + typeof firstName);//返回undefined console.log("typeof lastName: " + typeof lastName);//返回object console.log("typeof phone: " + typeof phone);//返回object console.log(null == undefined)//返回true console.log(null === undefined)//返回false //因為null==undefined,所以可以直接用null(或undefined)來同時判斷undefined或null值 //寫法一,用==null來判斷是否為undefined或null值,如下: console.log("寫法一:用==null來判斷"); if (firstName == null) { console.log('變量firstName為undefined或者null.'); } if (lastName == null) { console.log('變量lastName為undefined或者null.'); } if (phone == null) { console.log('變量phone為undefined或者null.'); } //應該也可以用==undefined來判斷吧,只是不常用? if (firstName == undefined) { console.log('變量firstName為undefined或者null.'); } if (lastName == undefined) { console.log('變量lastName為undefined或者null.'); } //寫法二,因為!null為真,所以也可以簡單的把判斷語句改為!null寫法來同時判斷undefined或null值 console.log("寫法二:用!null為真判斷"); if (!firstName) { console.log('變量firstName為undefined或者null.'); } if (!lastName) { console.log('變量lastName為undefined或者null.'); } if (!phone) { console.log('變量phone為undefined或者null.'); } //如果要嚴格區分是null或者是undefined,用===來判斷,例子如下: if (typeof phone === "undefined") { console.log(phone); console.log('變量phone為undefined.'); } else if (phone === null) { console.log('變量phone為null.'); }
測試結果如下:
2)以下關於null 和undefined 的區別(摘自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null)