typeof和instanceof都可以用來判斷變數,它們的用法有很大區別:
typeof會返回乙個變數的基本型別,只有以下幾種:number,boolean,string,object,undefined,function;例:
alert(typeof(1));//number
alert(typeof("abc"));//string
alert(typeof(true));//boolean
alert(typeof(m));//undefined
如果我們想要判斷乙個變數是否存在,可以使用typeof:(不能使用if(a) 若a未宣告,則報錯)
if(typeof a != 'undefined');
alert(a instanceof object); //true
var b = ;
alert(b instanceof array); //true
需要注意的是,instanceof只能用來判斷物件和函式,不能用來判斷字串和數字等,如:
var b = '123';
alert(b instanceof string); //false
alert(typeof b); //string
var c = new string("123");
alert(c instanceof string); //true
alert(typeof c); //object
另外,用instanceof可以判斷變數是否為陣列
alert(typeof '111'); // "string"
alert(typeof 22); // "number"
alert(typeof a); // "undefined"
alert(typeof undefined); // "undefined"
alert(typeof ); // "object"
但是這個方法不適用於來判斷陣列,因為不管是陣列還是物件,都會返回object,這就需要我們需求其他的方法。
有幾種方法可以拿來判斷:
1、constructor屬性
這個屬性在我們使用js系統或者自己建立的物件的時候,會預設的加上,例如:
var arr = [1,2,3]; //建立乙個陣列物件
arr.prototype.constructor = array; //這一句是系統預設加上的
所以我們就可以這樣來判斷:
var arr = [1,2,3,1];
alert(arr.constructor === array); // true
2、instanceof
instanceof是檢測物件的原型鏈是否指向建構函式的prototype物件的,所以我們也可以用它來判斷:
var arr = [1,2,3];
alert(arr instanceof array); // true
判斷陣列終極解決方案
var arr = [1,2,3];
function isarrayfn(obj)else{ //否則使用tostring方法
return object.prototype.tostring.call(obj) === "[object array]";
alert(isarrayfn(arr));// true
自己不官方的理解typeof和instanceof
一 typeof typeof 的 運算數未定義,返回 的 就是 undefined 運算數為數字 typeof x number 字串 typeof x string 布林值 typeof x boolean 物件,陣列和null typeof x object 函式 typeof x funct...
js中typeof和instanceof用法區別
typeof和instanceof都可以用來判斷變數,它們的用法有很大區別 typeof會返回乙個變數的基本型別,只有以下幾種 number,boolean,string,object,undefined,function 例 alert typeof 1 number alert typeof a...
在js中 typeof和instanceof的區別
typeof與instanceof都是用來判斷資料型別的,返回值是否為空等情況,但是他們具體的情況該如何區分?1.首先兩者返回的值不同。typeof返回的值是乙個字串,而,instanceof返回的是布林型別的值,判斷是true或者false。typeof返回的型別有 number,boolean,...