複製代碼代碼如下:
if (reValue== undefined){
alert("undefined");
}
發現判斷不出來,最後查了下資料要用typeof方法:
if (typeof(reValue) == "undefined") {
alert("undefined");
}
typeof 返回的是字符串,有六種可能:"number"、"string"、"boolean"、"object"、"function"、"undefined"
3.4 數據類型
ECMAScript中有5種簡單數據類型(也稱為基本數據類型):Undefined、Null、Boolean、Number 和String。還有1種複雜數據類型――Object,Object 本質上是由一組無序的名值對組成的。 ECMAScript 不支持任何創建自定義類型的機制,而所有值終都將是上述6種數據類型之一。乍一看,好像只有6 種數據類型不足以表示所有數據;但是,由於ECMAScript數據類型具有動態性,因此的確沒有再定義其他數據類型的必要了。
3.4.1 typeof操作符
鑑於ECMAScript 是鬆散類型的,因此需要有一種手段來檢測給定變量的數據類型――typeof 就是負責提供這方面信息的操作符。對一個值使用typeof 操作符可能返回下列某個字符串: "undefined"――如果這個值未定義; "boolean"――如果這個值是布爾值; "string"――如果這個值是字符串;
24 第3章基本概念
"number"――如果這個值是數值; "object"――如果這個值是對像或null; "function"――如果這個值是函數。 下面是幾個使用typeof 操作符的例子:
var message = "some string"; alert(typeof message); // "string" alert(typeof(message)); // "string" alert(typeof 95); // "number"
TypeofExample01.htm
這幾個例子說明,typeof 操作符的操作數可以是變量(message),也可以是數值字面量。注意, typeof 是一個操作符而不是函數,因此例子中的圓括號儘管可以使用,但不是必需的。 有些時候,typeof 操作符會返回一些令人迷惑但技術上卻正確的值。比如,調用typeof null 會返回"object",因為特殊值null 被認為是一個空的對象引用。 Safari 5及之前版本、Chrome 7及之前版本在對正則表達式調用typeof 操作符時會返回"function",而其他瀏覽器在這種情況下會返回"object"。
從技術角度講,函數在ECMAScript中是對象,不是一種數據類型。然而,函數也確實有一些特殊的屬性,因此通過typeof 操作符來區分函數和其他對像是有必要的。
複製代碼代碼如下:
function test1(){
var message;
if(typeof(message)=="undefined")
alert("變量值未定義");
else
alert(message);
}
var cc=test1;
cc();