JS中有6種數據類型:Undefined、Null、Boolean、Number、String和Object。JS中不支持任何創建自定義類型的機制,而所有值最終都將是這6種數據類型。其數據類型的動態性特點足以表示所有數據。JS提供typeof操作符來檢測變量的數據類型。
?。╰ypeof返回的是字符串有六種可能:"number","string","boolean","object","function","undefined")。
我們先來看看Undefined這個數據類型吧,Undefined類型只有一個特殊的值——undefined。undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。典型用法是:
?。?)變量被聲明了,但沒有賦值時,就等于undefined。
?。?) 調用函數時,應該提供的參數沒有提供,該參數等于undefined。
?。?)對象沒有賦值的屬性,該屬性的值為undefined。
?。?)函數沒有返回值時,默認返回undefined。
例如:
var color;
alert(message == undefined);//true
這個例子只聲明了變量color,但未對其初始化。比較這個變量與undefined字面量,結果表明它們是相等的。這個例子與下面的例子是等價的:
var color = undefined;
alert(color == undefined) ;//true
不過,包含undefined值的變量與尚未定義的變量還是不一樣的:
var color ;//變量聲明之后默認取得undefined值
//未聲明的變量
//var age
alert(color); //"undefined"
alert(age); //產生錯誤
然而,對未初始化的變量執行typeof操作符會返回undefined值,而對未聲明的變量執行typeof操作符同樣也會返回undefined值。
var color;//變量聲明之后默認取得undefined值
//未聲明的變量
//var age
alert(typeof color); //"undefined"
alert(typeof age); // "undefined"
結果表明,對未初始化和未聲明的變量執行 typeof 操作符都返回了 undefined 值;這個結果有其邏輯上的合理性。因為雖然這兩種變量從技術角度看有本質區別,但實際上無論對哪種變量也不可能執行真正的操作。