淺談js數(shù)據(jù)類(lèi)型判斷與數(shù)組判斷
寫(xiě)在開(kāi)篇:
昨天面試發(fā)現(xiàn)一個(gè)十分非常簡(jiǎn)單的問(wèn)題竟然沒(méi)有回答上來(lái),可能也確實(shí)是因?yàn)樘o張了,感覺(jué)被自己蠢哭了。后來(lái)想想還是應(yīng)該認(rèn)真記錄一下,這樣才能印象深刻。革命尚未成功,壯實(shí)仍需努力!
1. js六大數(shù)據(jù)類(lèi)型
number:數(shù)字,整數(shù)、浮點(diǎn)數(shù)等等,
string:?jiǎn)我?hào)或者雙引號(hào)來(lái)說(shuō)明,
Boolean:返回true和false,這兩個(gè)值不一定對(duì)應(yīng)1和0
object:對(duì)象,可以執(zhí)行new操作符后跟要?jiǎng)?chuàng)建的對(duì)象類(lèi)型的名稱(chēng)來(lái)創(chuàng)建。
null:只有一個(gè)值得數(shù)據(jù)類(lèi)型,邏輯上講,null值表示一個(gè)空對(duì)象指針。
undefined:未定義,使用var聲明變量但未對(duì)其初始化時(shí),變量的值就是undefined。
2. 數(shù)據(jù)類(lèi)型判斷之typeof
typeof可以解決大部分?jǐn)?shù)據(jù)類(lèi)型的判斷,其返回值為一個(gè)字符串,該字符串說(shuō)明運(yùn)算數(shù)的類(lèi)型。
//判斷變量num是不是一個(gè)數(shù)字類(lèi)型 if(typeof num=='number') { return true; }
返回結(jié)果:
var a="hling"; console.log(a); //string var a=1; console.log(a); //number var a=false; console.log(a); //boolean var a; console.log(typeof a); //undfined var a = null; console.log(typeof a); //object var a = document; console.log(typeof a); //object var a = []; console.log(a); //object var a = function(){}; console.log(typeof a) //function除了可以判斷數(shù)據(jù)類(lèi)型還可以判斷function類(lèi)型
除了string、number、boolean、undefined這四個(gè)類(lèi)型外,null、object、array返回的都是object類(lèi)型?。?!
對(duì)于函數(shù)類(lèi)型返回的則是function,再比如typeof(Date),typeof(eval)等。
3. js判斷數(shù)組類(lèi)型的方法
1) instanceof
instanceof 用于判斷一個(gè)變量是否某個(gè)對(duì)象的實(shí)例,是一個(gè)三目運(yùn)算式。這個(gè)操作符和JavaScript中面向?qū)ο笥悬c(diǎn)關(guān)系,了解這個(gè)就先得了解JavaScript中的面向?qū)ο?。因?yàn)檫@個(gè)操作符是檢測(cè)對(duì)象的原型鏈?zhǔn)欠裰赶驑?gòu)造函數(shù)的prototype對(duì)象的。
a instanceof b?alert("true"):alert("false") //注意b值是你想要判斷的那種數(shù)據(jù)類(lèi)型,是不是一個(gè)字符串,比如Array
例子:
var arr = [1,2,3,1]; alert(arr instanceof Array); // true
2) constructor
在W3C定義中的定義:constructor 屬性返回對(duì)創(chuàng)建此對(duì)象的數(shù)組函數(shù)的引用
var arr = []; arr instanceof Array; // true arr.constructor == Array; //true
判斷各種類(lèi)型的方法是:
console.log("string".constructor == String); console.log((123).constructor == Number); console.log(false.constructor == Boolean); console.log([].constructor == Array); console.log({}.constructor == Object);
通用的方法:
function isArray(object){ return object && typeof object==='object' && Array == object.constructor; }
3) 特性判斷
object.isArray() 來(lái)判斷,目的就是準(zhǔn)確地檢測(cè)一個(gè)值是否為數(shù)組。IE9+、 Firefox 4+、Safari 5+、Opera 10.5+和Chrome都實(shí)現(xiàn)了這個(gè)方法。但是在IE8之前的版本是不支持的。
function isArray(object){ return object && typeof object==='object' && typeof object.length==='number' && typeof object.splice==='function' && //判斷l(xiāng)ength屬性是否是可枚舉的 對(duì)于數(shù)組 將得到false !(object.propertyIsEnumerable('length')); }
4) Object.prototype.toString.call
Object.prototype.toString.call(value) == '[object Array]'
以上這篇淺談js數(shù)據(jù)類(lèi)型判斷與數(shù)組判斷就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- js判斷數(shù)據(jù)類(lèi)型如判斷是否為數(shù)組是否為字符串等等
- js 判斷數(shù)據(jù)類(lèi)型的幾種方法
- js 判斷各種數(shù)據(jù)類(lèi)型的簡(jiǎn)單方法(推薦)
- 判斷js中各種數(shù)據(jù)的類(lèi)型方法之typeof與0bject.prototype.toString講解
- Javascript如何判斷數(shù)據(jù)類(lèi)型和數(shù)組類(lèi)型
- js的各種數(shù)據(jù)類(lèi)型判斷的介紹
- JavaScript中判斷數(shù)據(jù)類(lèi)型的方法總結(jié)
- javascript 簡(jiǎn)單高效判斷數(shù)據(jù)類(lèi)型 系列函數(shù) By shawl.qiu
- JavaScript知識(shí)點(diǎn)總結(jié)(六)之JavaScript判斷變量數(shù)據(jù)類(lèi)型
- 關(guān)于JS數(shù)據(jù)類(lèi)型檢測(cè)的多種方式總結(jié)
相關(guān)文章
關(guān)于在IE下的一個(gè)安全BUG --可用于跟蹤用戶(hù)的系統(tǒng)鼠標(biāo)位置
本篇文章小編將為大家介紹,關(guān)于在IE下的一個(gè)安全BUG --可用于跟蹤用戶(hù)的系統(tǒng)鼠標(biāo)位置。需要的朋友可以參考一下2013-04-04JavaScript雙向鏈表實(shí)現(xiàn)LFU緩存算法
本文主要介紹了JavaScript雙向鏈表實(shí)現(xiàn)LFU緩存算法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01javascript中IE瀏覽器不支持NEW DATE()帶參數(shù)的解決方法
在火狐下 可以正常取得時(shí)間,在IE7下 卻是 NaN。糾結(jié)老長(zhǎng)時(shí)間,放棄了new date 然后再老外的論壇中找了一段段代碼可以兼容所有瀏覽器的格式化日期代碼2012-03-03JS實(shí)現(xiàn)點(diǎn)擊文本框改變背景顏色
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)點(diǎn)擊文本框改變背景顏色,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08原生js簡(jiǎn)單實(shí)現(xiàn)放大鏡特效
這篇文章主要為大家詳細(xì)介紹了原生js簡(jiǎn)單實(shí)現(xiàn)放大鏡特效,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05JavaScript生成隨機(jī)數(shù)的4種自定義函數(shù)分享
這篇文章主要介紹了JavaScript生成隨機(jī)數(shù)的4種自定義函數(shù)分享,本文講解了4種方法并同時(shí)給出4個(gè)代碼片段,需要的朋友可以參考下2015-02-02將字符串轉(zhuǎn)換成gb2312或者utf-8編碼的參數(shù)(js版)
直接在url中傳遞中文參數(shù)時(shí),讀到的中文都是亂碼,那么我們應(yīng)該怎么將這些參數(shù)轉(zhuǎn)換呢,接下來(lái)與大家分享下將字符串轉(zhuǎn)換成utf-8或者gb2312編碼的參數(shù)的技巧2013-04-04JavaScript預(yù)解析及相關(guān)技巧分析
這篇文章主要介紹了JavaScript預(yù)解析及相關(guān)技巧,結(jié)合實(shí)例形式分析了JavaScript與解析的原理,步驟與相關(guān)技巧,需要的朋友可以參考下2016-04-04