JS中的變量是鬆散類型(即弱類型)的,可以用來保存任何類型的數據。
typeof 可以用來檢測給定變量的數據類型,可能的返回值:
1. ‘undefined’ --- 這個值未定義;
2. 'boolean' --- 這個值是布爾值;
3. 'string' --- 這個值是字符串;
4. 'number' --- 這個值是數值;
5. 'object' --- 這個值是對象或null;
6. 'function' --- 這個值是函數。
1.檢查一個變量是否存在,是否有值.
typeof在兩種情況下會返回"undefined":一個變量沒有被聲明的時候,和一個變量的值是undefined的時候.例如:
var a;
var b = undefined;
alert(typeof(a)); //undefined
alert(typeof(b)); //undefined
還有其他辦法檢測某個值是否是undefined:
alert(a === undefined);//true
alert(b === undefined);//true
2.判斷一個值不等於undefined也不等於null
問題:如果你想檢測一個值是否被定義過(值不是undefined也不是null),那麼你就遇到了typeof的一個怪異表現:
alert(typeof(null)); //object
3.原始值的類型是什麼?
typeof是最好的用來查看某個原始值的類型的方式.
alert(typeof("123"));
//string
alert(typeof(123)); //number
alert(typeof(true)); //boolean
5.某個值是否是函數
typeof可以用來檢測一個值是否是函數.
alert(typeof(function (){}));
原則上說,instanceof Function也可以進行這種需求的檢測.但是,瀏覽器有一個怪癖:每一個框架和窗口都有它自己的全局變量.因此,如果你將某個框架中的對象傳到另一個框架中,instanceof就不能正常工作了,因爲這兩個框架有着不同的構造函數.這就是爲什麼ECMAScript5中會有Array.isArray()方法的原因.