您好,登錄后才能下訂單哦!
小編給大家分享一下基于javascript中typeof和類型判斷的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
typeof
ECMAScript 有 5 種原始類型(primitive type),即 Undefined、Null、Boolean、Number 和 String。我們都知道可以使用typeof運(yùn)算符求得一個(gè)變量的類型,但是對(duì)引用類型變量卻只會(huì)返回object,也就是說typeof只能正確識(shí)別基本類型值變量。
var a = "abc"; console.log(typeof a); // "string" var b = 123; console.log(typeof b); // "number" var c = true; console.log(typeof c); // "boolean" var d = null; console.log(typeof d); // "object" var f = undefined; console.log(typeof f); // "undefined" var g; console.log(typeof g); // "undefined" console.log(typeof x); // "undefined"
您也許會(huì)問,為什么 typeof 運(yùn)算符對(duì)于 null 值會(huì)返回 "object"。這實(shí)際上是 JavaScript 最初實(shí)現(xiàn)中的一個(gè)錯(cuò)誤,然后被 ECMAScript 沿用了?,F(xiàn)在,null 被認(rèn)為是對(duì)象的占位符,從而解釋了這一矛盾,但從技術(shù)上來說,它仍然是原始值。
最后一個(gè)比較奇怪,typeof一個(gè)不存在的變量x居然返回了"object"而不是"undefined"。
我們?cè)趤砣缦麓a:
var a = function() { }; console.log(typeof a); // "function" var b = [1,2,3]; console.log(typeof b); // "object" var c = { }; console.log(typeof c); // "object"
對(duì)于數(shù)組和對(duì)象都返回"object",因此我們?nèi)粘i_發(fā)中一個(gè)常見需求就是如何判斷變量是數(shù)組還是對(duì)象。
類型判斷
類型判斷,一般就是判斷是否是數(shù)組,是否是空對(duì)象。這是針對(duì)這個(gè)需求,我日常用過或見過的判斷方法
判斷是否是數(shù)組
有數(shù)組:var a = [1,2,3,4,5];
方法一:
toString.call(a); // "[object Array]"方法二:
a instanceof Array; //true方法三:
a.constructor == Array; //true 第一種方法比較通用,也就是Object.prototype.toString.call(a)的簡寫。
instanceof和constructor判斷的變量,必須在當(dāng)前頁面聲明的,比如,一個(gè)頁面(父頁面)有一個(gè)框架,框架中引用了一個(gè)頁面(子頁面),在子頁面中聲明了一個(gè)a,并將其賦值給父頁面的一個(gè)變量,這時(shí)判斷該變量,Array == object.constructor會(huì)返回false;
var a = [1,2,3,4,5]; console.log(toString.call(a)); // "[object Array]" console.log(a instanceof Array); //true console.log(a.constructor == Array); //true
判斷是否是空對(duì)象
有變量:var obj = {};
方法一:
JSON.stringify(obj); // "{}"通過轉(zhuǎn)換成JSON對(duì)象來判斷是否是空大括號(hào)
方法二:
if(obj.id){ //如果屬性id存在....}這個(gè)方法比較土,大多數(shù)人都能想到,前提是得知道對(duì)象中有某個(gè)屬性。
方法三:
function isEmptyObject(e) { var t; for (t in e) return !1; return !0 } //trueisEmptyObject(obj); //falseisEmptyObject({ "a":1, "b":2});
這個(gè)方法是jQuery的isEmptyObject()方法的實(shí)現(xiàn)方式。
以上是“基于javascript中typeof和類型判斷的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。