淺析undefined與null的區別
相似處:
1、undefined 和 null 都是javascript 的基本數據類型。其實兩者沒有太大區別。
定義:
var a=undefined;
var a=null;
null==undefined;//true
2、null是一個表示"無"的對象,轉爲數值時爲0;undefined是一個表示"無"的原始值,轉爲數值時爲NaN。
Number(undefined)//NaN
5 + undefined
//NaN
而對於null
Number(null)
// 0
5 + null
// 5
區別
1、null表示"沒有對象",即該處不應該有值。典型用法是:(1) 作爲函數的參數,表示該函數的參數不是對象。
(2) 作爲對象原型鏈的終點。
Object.getPrototypeOf(Object.prototype)
// null
2、undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。典型用法是:
(1)變量被聲明瞭,但沒有賦值時,就等於undefined。
(2) 調用函數時,應該提供的參數沒有提供,該參數等於undefined。
(3)對象沒有賦值的屬性,該屬性的值爲undefined。
(4)函數沒有返回值時,默認返回undefined。
example
var a;
a;//undefined
function f(x){console.log(x);}
f(x);//undefined
var obj=new Object();
obj.name;//undefined
var x=f();
x;//undefined