欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript中關(guān)于類型判斷的一些疑惑小結(jié)

 更新時間:2018年10月14日 15:23:26   作者:ylzsmallsun  
這篇文章主要給大家介紹了關(guān)于javascript中關(guān)于類型判斷的一些疑惑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

類型判斷是我們在日常工作中經(jīng)常會遇到的一個功能,本文將給大家詳細(xì)介紹關(guān)于javascript類型判斷的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細(xì)的介紹吧

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

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

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

首先來看看 typeof

Type Result
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"

來點(diǎn)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? 這其實(shí)是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,它的每個實(shí)例都有constructor屬性。

instanceof vs isArray

當(dāng)檢測Array實(shí)例時, Array.isArray 優(yōu)于 instanceof,因?yàn)锳rray.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的。補(bǔ)充以下結(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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 原生JS實(shí)現(xiàn)微信通訊錄

    原生JS實(shí)現(xiàn)微信通訊錄

    這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)微信通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • ES6 如何改變JS內(nèi)置行為的代理與反射

    ES6 如何改變JS內(nèi)置行為的代理與反射

    這篇文章主要介紹了ES6 如何改變JS內(nèi)置行為的代理與反射,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • JS實(shí)現(xiàn)的多張圖片輪流播放幻燈片效果

    JS實(shí)現(xiàn)的多張圖片輪流播放幻燈片效果

    這篇文章主要介紹了JS實(shí)現(xiàn)的多張圖片輪流播放幻燈片效果,實(shí)例分析了js圖片輪播插件的實(shí)現(xiàn)代碼與具體使用方法,需要的朋友可以參考下
    2016-07-07
  • ES6?關(guān)鍵字?let?和?ES5?及關(guān)鍵字?var?的區(qū)別解析

    ES6?關(guān)鍵字?let?和?ES5?及關(guān)鍵字?var?的區(qū)別解析

    var可以穿透控制語句、條件語句這樣的作用域,導(dǎo)致變量沖突經(jīng)常發(fā)生,這篇文章主要介紹了ES6?關(guān)鍵字?let?和?ES5?及關(guān)鍵字?var?的區(qū)別,需要的朋友可以參考下
    2022-09-09
  • 微信小程序?qū)崿F(xiàn)吸頂特效

    微信小程序?qū)崿F(xiàn)吸頂特效

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)吸頂特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • JavaScript函數(shù)封裝隨機(jī)顏色驗(yàn)證碼(完整代碼)

    JavaScript函數(shù)封裝隨機(jī)顏色驗(yàn)證碼(完整代碼)

    這篇文章主要介紹了JavaScript函數(shù)封裝隨機(jī)顏色驗(yàn)證碼(完整代碼),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • JavaScript實(shí)現(xiàn)指定數(shù)量的并發(fā)限制的示例代碼

    JavaScript實(shí)現(xiàn)指定數(shù)量的并發(fā)限制的示例代碼

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)指定數(shù)量的并發(fā)限制的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • JS搜狐面試題分析

    JS搜狐面試題分析

    這篇文章主要介紹了JS搜狐面試題,涉及javascript數(shù)組、字符串及面向?qū)ο蟪绦蛟O(shè)計(jì)相關(guān)技巧,需要的朋友可以參考下
    2016-12-12
  • JavaScript表格常用操作方法匯總

    JavaScript表格常用操作方法匯總

    這篇文章主要介紹了JavaScript表格常用操作方法,實(shí)例匯總了javascript中表格操作的創(chuàng)建、添加、刪除、遍歷等常用操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • js實(shí)現(xiàn)內(nèi)容顯示并使用json傳輸數(shù)據(jù)

    js實(shí)現(xiàn)內(nèi)容顯示并使用json傳輸數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)內(nèi)容顯示并使用json傳輸數(shù)據(jù)的方法,感興趣的小伙伴們可以參考一下
    2016-03-03

最新評論