typeof [ ( ] expression [ ) ] ; // expression 參數(shù)是需要查找類型信息的任意表達式。 typeof 語法中的圓括號是可選項蛤肌。
typeof 運算符返回一個用來表示表達式的數(shù)據類型的字符串。即: typeof 運算符把類型信息當作字符串返回可能的字符串有六種:"string"瘤礁、"number"阳懂、"boolean"、"object"希太、"function" 和 "undefined"酝蜒。
如:
alert(typeof (123));//typeof(123)返回"number"
alert(typeof ("123"));//typeof("123")返回"string"
我們可以使用typeof來獲取一個變量是否存在
如 : if(typeof a!="undefined"){}誊辉,而不要去使用if(a)因為如果a不存在(未聲明)則會出錯
運算數(shù)為數(shù)字 typeof(x) = “number”
字符串 typeof(x) = “string”
布爾值 typeof(x) = “boolean”
對象,數(shù)組和null typeof(x) = “object”
函數(shù) typeof(x) = “function”
對于Array,Null等特殊對象使用typeof一律返回object,這正是typeof的局限性亡脑。
使用typeof操作符
對一個值使用typeof操作符可能返回下列某個字符串:
1):undefined——如果這個值未定義
2):boolean——如果這個值是布爾值
3):string——如果這個值是字符串
4):number——如果這個值是數(shù)值
5):object——如果這個值是對象或null
6):function——如果這個值是函數(shù)
值得注意的是:typeof是操作符而不是函數(shù)堕澄,因此圓括號盡管可以使用,但不是必須的
為了區(qū)分對象的類型邀跃,我們用typeof操作符獲取對象的類型蛙紫,它總是返回一個字符串:
typeof 123; // 'number'
typeof NaN; // 'number'
typeof 'str'; // 'string'
typeof true; // 'boolean'
typeof undefined; // 'undefined'
typeof Math.abs; // 'function'
typeof null; // 'object'
typeof []; // 'object'
typeof {}; // 'object'
可見,number坑傅、string、boolean蒜茴、function和undefined
有別于其他類型浆西。
特別注意null的類型是object粉私,Array的類型也是object近零,如果我們用typeof將無法區(qū)分出null、Array和通常意義上的object——{}
判斷Array 要使用Array.isArray(arr)久信;
判斷null請使用myVar === null;
判斷某個全局變量是否存在用typeof window.myVar=== 'undefined'陈瘦;
函數(shù)內部判斷某個變量是否存在用typeof myVar === 'undefined'潮售。
instanceof
如果我們希望獲取一個對象是否是數(shù)組锅风,或判斷某個變量是否是某個對象的實例則要選擇使用instanceof。instanceof用于判斷一個變量是否某個對象的實例:
如var a=new Array();
alert(a instanceof Array); // 會返回true
同時alert(a instanceof Object); // 也會返回true; 這是因為Array是object的子類皱埠。
再如:
function test(){};
var a=new test();
alert(a instanceof test) ; // 會返回true。
友情提示
a instanceof Object 得到true并不是因為 Array是Object的子對象训枢,而是因為 Array的prototype屬性構造于Object忘巧,Array的父級是Function