數據類型-未定義 undefined、空 null

未定義 undefined

  • 定義

這種數據類型只有一個值,就是undefined
表示"缺少值",就是此處應該有一個值,但是還沒有定義

  • 常見位置(常見用法)

    • 變量被聲明了,但沒有賦值時,就等于undefined
var a;
a    //undefined
  • 調用函數時,應該提供的參數沒有提供,該參數的值為undefined
function fn(a){
        console.log(a);    //undefined
};
fn();
  • 對象沒有賦值的屬性,該屬性的值為undefined
var a=1;
console.log(a.style);    //undefined
  • 函數沒有返回值時,默認返回undefined
var a = function fn(){
        alert(1);    //1
};
console.log(fn());    //undefined

空 null

  • 定義

這種數據類型只有一個值,就是null
null表示"沒有對象",即該處不應該有值

  • 常見位置(常見用法)

    • 獲取頁面中不存在的東西,返回值為null
var btn = document.getElementById('btn');  //頁面中沒有btn這個id
a    //null
  • 調用函數時,不需要傳入某個參數,這時就可以傳入null
  • 作為對象原型鏈的終點

注意:JavaScript的標識名區分大小寫,undefined和null不同于Undefined和Null(或者其他僅僅大小寫不同的詞形),后者只是普通的變量名

兩者對比

  • 關于變量

var a;
a                //undefined
a == null        //true    存在數據類型轉換,a被轉換成了undefined,而undefined == null,故這里為true
a == undefined   //true
a === null       //false
a === undefined  //true
typeof a         //'undefined'
  • 大小判斷

if(!null){       //存在隱式類型轉換,將null轉換為false
    alert(1);      //故這里彈出1
}
if(!undefined){  //存在隱式類型轉換,將undefined轉換為false
    alert(1);      //故這里彈出1
}
//undefined和null在if語句中,都會被自動轉為false
//故下面的undefined == null的結果為true
undefined == null     //true        存在隱式類型轉換,undefined和null都被轉換為false
undefined === null     //false
  • typeof返回值

typeof undefined    //'undefined'
typeof null         //'object'
//并不是說null的數據類型就是對象,而是JavaScript早期部署中的一個約定俗成,其實不完全正確,后來再想改已經太晚了,會破壞現存代碼,所以一直保留至今
  • Number()返回值

Number(undefined)    //NaN
Number(null)         //0
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容