了解 JavaScript 的 typeof 到底是什麼,有什麼作用呢?
記得之前在web上要判斷 某一個 html上的物件(ex: div、span、document.form.xxx)是否存在,
都會用 一個 叫 typeof 的方法來 判斷此物件 是否為 undefined,例如 typeof(elIdObj) == "undefined",
但今天 我用此方法來判斷 typeof(document.getElementById("spdId")) == "undefined",得到的結果,
竟然跟我想知道的不一樣,typeof(document.getElementById("spdId")) 得到的結果 卻是 "Object"
在這裡我要先說明一件事,就是 getElementById 裡的 spdId,這個 id 是不存在於 網頁上,所以,
就我的認知,它應該是回傳為 "undefined",但卻傳回 "Object",令我百思不得其解,所以就上網查了
一些資料,來真正了解 typeof 的用法,我把找的資料截取一段來看,如下,
====================================================================================
typeof是一個一元運算符,它返回的結果始終是一個字符串,對不同的操作數,它返回不同的結果。
具體的規則如下:
一、對於數字類型的操作數而言, typeof 返回的值是 number。比如說:typeof(1),返回的值就是number。
上面是舉的常規數字,對於非常規的數字類型而言,其結果返回的也是number。比如typeof(NaN),NaN在
JavaScript中代表的是特殊非數字值,雖然它本身是一個數字類型。
在JavaScript中,特殊的數字類型還有幾種:
Infinity 表示無窮大特殊值
NaN 特殊的非數字值
Number.MAX_VALUE 可表示的最大數字
Number.MIN_VALUE 可表示的最小數字(與零最接近)
Number.NaN 特殊的非數字值
Number.POSITIVE_INFINITY 表示正無窮大的特殊值
Number.NEGATIVE_INFINITY 表示負無窮大的特殊值
以上特殊類型,在用typeof進行運算進,其結果都將是number。
二、對於字符串類型, typeof 返回的值是 string。比如typeof("123")返回的值是string。
三、對於布爾類型, typeof 返回的值是 boolean 。比如typeof(true)返回的值是boolean。
四、對於對象、數組、null 返回的值是 object 。比如typeof(window),typeof(document),typeof(null)返回的值都是object。
五、對於函數類型,返回的值是 function。比如:typeof(eval),typeof(Date)返回的值都是function。
六、如果運算數是沒有定義的(比如說不存在的變量、函數或者undefined),將返回undefined。比如:typeof(sss)、typeof(undefined)都返回undefined。
資料來源: http://www.jb51.net/article/16342_2.htm