javascript中類型判斷的示例分析

小編給大家分享一下javascript中類型判斷的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

河?xùn)|網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)自2013年創(chuàng)立以來到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

Javascript中數(shù)據(jù)類型分為兩種:

  • 簡單數(shù)據(jù)類型:Undefined, NULL, Boolean, Number, String

  • 復(fù)雜數(shù)據(jù)類型:Object

接下來我們就來看看怎么做數(shù)據(jù)類型判別吧?

首先來看看 typeof

TypeResult
Undefined"undefined"
Null"object" (see below)
Boolean"boolean"
Number"number"
String"string"
Symbol (new in ECMAScript 2015)"symbol"
Host object (provided by the JS environment)Implementation-dependent
Function object (implements [[Call]] in ECMA-262 terms)"function"
Any other object"object"

來點code demo吧

let a = undefined;
typeof a
"undefined"

let b = false;
typeof b
"boolean"

let c = 12;
typeof c
"number"

let d = '12';
typeof d
"string"

let f = function () {};
typeof f
"function"

接下來我們就來看看那些奇怪的現(xiàn)象吧

let str = new String('abc');
typeof str
"object"

let num = new Number(12);
typeof num
"object"

var func = new Function();
typeof func; 
"function"

typeof null
"object"

使用構(gòu)造函數(shù)創(chuàng)建的變量,使用typeof判斷會返回“object”結(jié)果,但是Function函數(shù)例外,由它創(chuàng)建的變量typeof返回的是“function”

接著就來說說typeof null == "object"。這個相信前端開發(fā)的小伙伴都知道是這個結(jié)果了,But why? 這其實是javascript第一個版本就存在的一個bug,歷史原因可以看看這篇文章The history of typeof null

關(guān)于如何判斷數(shù)組

let arr = [1, 2, 3];
typeof arr
"object"

上面這個結(jié)果大家應(yīng)該不陌生,那該如何正確判斷數(shù)組類型呢

1、instanceof

arr instanceof Array //true

2、isArray

Array.isArray(arr) // true

3、constructor.name

arr.constructor.name // "Array"

第三種用法用的人應(yīng)該比較少,不少前端的的小伙伴都沒用過。對于復(fù)雜類型Object,它的每個實例都有constructor屬性。

instanceof vs isArray

當檢測Array實例時, Array.isArray 優(yōu)于 instanceof,因為Array.isArray能檢測iframes.

var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
xArray = window.frames[window.frames.length-1].Array;
var arr = new xArray(1,2,3); // [1,2,3]

// Correctly checking for Array
Array.isArray(arr); // true
// Considered harmful, because doesn't work though iframes
arr instanceof Array; // false

這段代碼是從MDN copy的。補充以下結(jié)果,發(fā)現(xiàn)第三種方法constructor.name也能正確判斷出。

arr.constructor.name //"Array"

關(guān)于NaN

使用isNaN判斷NaN。

isNaN(1/'a') // true

我們知道NaN == NaN結(jié)果是false,那如何判斷兩個NaN變量呢?

比較兩個NaN變量,使用es6的Object.is()即可。

let nan1 = NaN
let nan2 = NaN
Object.is(nan1, nan2)
true

以上是“javascript中類型判斷的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當前名稱:javascript中類型判斷的示例分析
當前路徑:http://bm7419.com/article48/geghhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站改版企業(yè)建站、服務(wù)器托管、網(wǎng)站收錄、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)