国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:28:45
字體:
來源:轉載
供稿:網友

前言

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

Javascript中數據類型分為兩種:

簡單數據類型:Undefined, NULL, Boolean, Number, String 復雜數據類型:Object

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

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

接下來我們就來看看那些奇怪的現象吧

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"

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

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

關于如何判斷數組

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

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

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 優于 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 ArrayArray.isArray(arr); // true// Considered harmful, because doesn't work though iframesarr instanceof Array; // false            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 石景山区| 奉新县| 玛曲县| 双城市| 山阳县| 三台县| 郯城县| 奎屯市| 毕节市| 渝中区| 乌海市| 聂拉木县| 江山市| 松阳县| 金昌市| 大洼县| 临夏市| 辛集市| 仁化县| 鞍山市| 察雅县| 嘉义市| 万载县| 内丘县| 阜康市| 泊头市| 马关县| 花垣县| 海丰县| 扎囊县| 湘潭县| 南城县| 黔江区| 乌兰察布市| 永寿县| 根河市| 墨竹工卡县| 澄迈县| 清河县| 榕江县| 射洪县|