最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript中關于類型判斷的一些疑惑小結

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

前言

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

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

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

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

首先來看看 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"

來點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"

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

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

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

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

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

1、instanceof

arr instanceof Array //true

2、isArray

Array.isArray(arr) // true

3、constructor.name

arr.constructor.name // "Array"

第三種用法用的人應該比較少,不少前端的的小伙伴都沒用過。對于復雜類型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的。補充以下結果,發(fā)現(xiàn)第三種方法constructor.name也能正確判斷出。

arr.constructor.name //"Array"

關于NaN

使用isNaN判斷NaN。

isNaN(1/'a') // true

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

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

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

總結

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

相關文章

  • JSON無限折疊菜單編寫實例

    JSON無限折疊菜單編寫實例

    這篇文章主要介紹了JSON無限折疊菜單編寫實例,有需要的朋友可以參考一下
    2013-12-12
  • JS生成隨機打亂數(shù)組的方法示例

    JS生成隨機打亂數(shù)組的方法示例

    這篇文章主要介紹了JS生成隨機打亂數(shù)組的方法,涉及javascript數(shù)組隨機排序的相關操作技巧,需要的朋友可以參考下
    2017-12-12
  • JavaScript實現(xiàn)捕獲鼠標坐標

    JavaScript實現(xiàn)捕獲鼠標坐標

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)捕獲鼠標坐標,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • javascript實現(xiàn)搜索篩選功能實例代碼

    javascript實現(xiàn)搜索篩選功能實例代碼

    這篇文章主要給大家介紹了關于javascript實現(xiàn)搜索篩選功能的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 簡單談談javascript代碼復用模式

    簡單談談javascript代碼復用模式

    這篇文章主要簡單談談javascript代碼復用模式,主要詳細介紹了類式繼承模式中的默認模式,希望大家能夠喜歡。
    2015-01-01
  • 最新JS正則表達式驗證郵箱和手機號實例(2022)

    最新JS正則表達式驗證郵箱和手機號實例(2022)

    在前端開發(fā)過程中,通過使用JS的正則表達式來校驗輸入的郵箱或者手機號是否正確,這也是一個非常常見的業(yè)務情景需求,下面這篇文章主要給大家介紹了關于利用JS正則表達式驗證郵箱和手機號的相關資料,需要的朋友可以參考下
    2022-08-08
  • FireFox中textNode分片的問題

    FireFox中textNode分片的問題

    FireFox中textNode分片的問題...
    2007-04-04
  • 微信小程序實現(xiàn)收縮式菜單

    微信小程序實現(xiàn)收縮式菜單

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)收縮式菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JavaScript實現(xiàn)有限狀態(tài)機的示例代碼

    JavaScript實現(xiàn)有限狀態(tài)機的示例代碼

    有限狀態(tài)機(Finite?State?Machine,?FSM)是一種數(shù)學模型,用于描述系統(tǒng)在不同狀態(tài)下的行為,本文給大家介紹JavaScript實現(xiàn)有限狀態(tài)機的示例代碼,感興趣的朋友一起看看吧
    2024-12-12
  • JavaScript中文件流的處理場景及方法

    JavaScript中文件流的處理場景及方法

    作為一名前端開發(fā),我們平時也少不了對文件流數(shù)據進行處理,今天簡單整理一下日常開發(fā)中比較常見的一些處理文件流的場景及處理方法,希望可以幫助到大家
    2023-09-09

最新評論

通辽市| 义乌市| 西乌珠穆沁旗| 林甸县| 钟山县| 阿克苏市| 武城县| 南丰县| 梓潼县| 武城县| 故城县| 洛扎县| 鲁山县| 左贡县| 盐亭县| 嘉黎县| 梅州市| 桦甸市| 全南县| 内丘县| 华安县| 英吉沙县| 土默特左旗| 新乐市| 汝南县| 天津市| 临湘市| 泗阳县| 沙田区| 桃源县| 南和县| 蓬莱市| 绿春县| 沧州市| 宁海县| 建昌县| 陇川县| 东乡| 雅江县| 嵊泗县| 类乌齐县|