JavaScript 中 typeof 和 instanceof 經常使用來判斷一個變量是否爲空,或者是什麼類型的。但它們之間仍是有區別的:數組
typeofdom
typeof 是一個一元運算,放在一個運算數以前,運算數能夠是任意類型。函數
它返回值是一個字符串,該字符串說明運算數的類型。(typeof 運算符返回一個用來表示表達式的數據類型的字符串。 )測試
typeof其實就是判斷參數是什麼類型的實例,就一個參數spa
typeof 通常只能返回以下幾個結果:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。prototype
運算數爲數字 typeof(x) = "number"
字符串 typeof(x) = "string"
布爾值 typeof(x) = "boolean"
對象,數組和null typeof(x) = "object"
函數 typeof(x) = "function"
console.log(typeof (123));//typeof(123)返回"number" console.log(typeof ("123"));//typeof("123")返回"string" var param1 = "string"; var param2 = new Object(); var param3 = 10; console.log(typeof(param1)+"\n"+typeof(param2)+"\n"+typeof(param3));
// string object number
咱們可使用 typeof 來獲取一個變量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 由於若是 a 不存在(未聲明)則會出錯,對於 Array,Null 等特殊對象使用 typeof 一概返回 object,這正是 typeof 的侷限性。code
常常會在js裏用到數組,好比 多個名字相同的input, 如果動態生成的, 提交時就須要判斷其是不是數組.
if(document.mylist.length != "undefined" ) {} //這個用法有誤.
正確的是 if( typeof(document.mylist.length) != "undefined" ) {}
或 if( !isNaN(document.mylist.length) ) {}
typeof的運算數未定義,返回的就是 "undefined".
在 JavaScript 中,判斷一個變量的類型嚐嚐會用 typeof 運算符,在使用 typeof 運算符時採用引用類型存儲值會出現一個問題,不管引用的是什麼類型的對象,它都返回 「object」。這就須要用到instanceof來檢測某個對象是否是另外一個對象的實例。