這幾天在看邱俊濤著的《Javascript核心概念與實踐》書籍,及這幾天看到前端面試疑難題解析的博文,感覺對Javascript語言編程有一步認識與理解,然後將這些理解分享給大家,希望小編的想法可以正確引導你。不過小編也不排除下面想法可能存在問題,但是博友發現問題請在評論中指出,讓你的正確思想正確指導我們,分享你的成就。
一、typeof 與 instanceof 的用法
這裏先看一下這兩個含義:
typeof 是一個一元的操作符(運算符),一般放在運算數之前,用來判斷運算數的類型,返回值是一個字符串,一般只有以下number,boolean,string,function,object,undefined六個字符串。
instanceof也是一個運算符,一般用來判斷運算數是不是某一類的實例。 返回值是boolean值。結構列如: O instanceof A O表示運算數,A表示某一類。
下面舉例說明:
var a = 1;
var b = 3.21454;
var c = "Hello world!";
var d = [1,2,3];
var e = new Object();
var f = function(){
console.log("Hello world!");
}
console.log(typeof a);
console.log(typeof b);
console.log(typeof c);
console.log(typeof d);
console.log(typeof e);
console.log(typeof f);
運行結果是:
number
number
string
object
object
function
這裏大家也看到了d是一個數組Array,但是它typeof運算後也是Object。所以用typeof判斷時要注意是否有Array數組。如何判斷是否是Array後面小編會說明。現在先看instanceof的例子:
var d = [1,2,3];
var f = function(){
console.log("Hello world!");
}
var bRes = d instanceof Array;
console.log(bRes);
var bRes = d instanceof Object;
console.log(bRes);
bRes = f instanceof Function;
console.log(bRes);
bRes = f instanceof Object;
console.log(bRes);
bRes = Array instanceof Object;
console.log(bRes);
bRes = Function instanceof Object;
console.log(bRes);
結果:
true
true
true
true
true
true
沒有看錯,它全部都是正確的,因爲在Javascript語言中,可是這樣將一切都是對象。
上面不是還沒有講述如果判斷Array嗎? 只要結合typeof與instanceof一起使用就可以正確判斷。
注:這裏還有一個特殊:
console.log(typeof null);
console.log(typeof undefined);
結果是: Object
undefined
小編先寫這裏,如果有不對的地方,望博友們可以評論提出,謝謝!