摘要:對于復(fù)雜類型它的每個(gè)實(shí)例都有屬性。當(dāng)檢測實(shí)例時(shí)優(yōu)于因?yàn)槟軝z測這段代碼是從的。補(bǔ)充以下結(jié)果,發(fā)現(xiàn)第三種方法也能正確判斷出。我們知道結(jié)果是那如何判斷兩個(gè)變量呢比較兩個(gè)變量,使用的即可。
Javascript中數(shù)據(jù)類型分為兩種:
簡單數(shù)據(jù)類型:Undefined, NULL, Boolean, Number, String
復(fù)雜數(shù)據(jù)類型:Object
接下來我們就來看看怎么做數(shù)據(jù)類型判別吧?
首先來看看 typeofType | 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"。這個(gè)相信前端開發(fā)的小伙伴都知道是這個(gè)結(jié)果了,But why? 這其實(shí)是javascript第一個(gè)版本就存在的一個(gè)bug,歷史原因可以看看這篇文章The history of typeof null
關(guān)于如何判斷數(shù)組let arr = [1, 2, 3]; typeof arr "object"
上面這個(gè)結(jié)果大家應(yīng)該不陌生,那該如何正確判斷數(shù)組類型呢
instanceof
arr instanceof Array //true
isArray
Array.isArray(arr) // true
constructor.name
arr.constructor.name // "Array"
第三種用法用的人應(yīng)該比較少,不少前端的的小伙伴都沒用過。對于復(fù)雜類型Object,它的每個(gè)實(shí)例都有constructor屬性。
instanceof vs isArray當(dāng)檢測Array實(shí)例時(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,那如何判斷兩個(gè)NaN變量呢?
比較兩個(gè)NaN變量,使用es6的Object.is()即可。
let nan1 = NaN let nan2 = NaN Object.is(nan1, nan2) true
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/98312.html
摘要:寫在前面專題系列是我寫的第二個(gè)系列,第一個(gè)系列是深入系列。專題系列自月日發(fā)布第一篇文章,到月日發(fā)布最后一篇,感謝各位朋友的收藏點(diǎn)贊,鼓勵指正。 寫在前面 JavaScript 專題系列是我寫的第二個(gè)系列,第一個(gè)系列是 JavaScript 深入系列。 JavaScript 專題系列共計(jì) 20 篇,主要研究日常開發(fā)中一些功能點(diǎn)的實(shí)現(xiàn),比如防抖、節(jié)流、去重、類型判斷、拷貝、最值、扁平、柯里...
摘要:設(shè)計(jì)模式是以面向?qū)ο缶幊虨榛A(chǔ)的,的面向?qū)ο缶幊毯蛡鹘y(tǒng)的的面向?qū)ο缶幊逃行┎顒e,這讓我一開始接觸的時(shí)候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續(xù)了解設(shè)計(jì)模式必須要先搞懂面向?qū)ο缶幊蹋駝t只會讓你自己更痛苦。 JavaScript 中的構(gòu)造函數(shù) 學(xué)習(xí)總結(jié)。知識只有分享才有存在的意義。 是時(shí)候替換你的 for 循環(huán)大法了~ 《小分享》JavaScript中數(shù)組的那些迭代方法~ ...
摘要:將指定的數(shù)字索引值轉(zhuǎn)換成字符串索引值變成,然后將其作為屬性名來用。返回一個(gè)由刪除元素組成的數(shù)組。該方法返回的數(shù)組元素是調(diào)用的數(shù)組的一個(gè)子集。使用的函數(shù)有四個(gè)參數(shù)初始值積累值數(shù)組元素元素索引數(shù)組本身。 前言 很多人在學(xué)習(xí)原生JS的過程中會遇到一些疑惑,比如在學(xué)習(xí)array時(shí),就很容易搞不清哪些方法會改變原來數(shù)組,哪些方法不會改變原來數(shù)組?再比如很多人會使用new Date()獲取時(shí)間,卻...
摘要:關(guān)于兩個(gè)專業(yè)術(shù)語的討論起自對你不知道的一書的閱讀學(xué)習(xí)。遇到,編譯器會詢問作用域是否已經(jīng)有一個(gè)該名稱的變量存在于同一個(gè)作用域的集合中。摘錄來自你不知道的。 JS 編譯之 LHS RHS 一、前言 最近和朋友聊技術(shù)的時(shí)候,聊到 LHS RHS,我竟然沒聽說過 沒聽說過。。。 于是成功引起了我的好奇心。 關(guān)于兩個(gè)專業(yè)術(shù)語的討論起自對《你不知道的JavaScript》一書的閱讀學(xué)習(xí)。 二、編譯...
摘要:忍者級別的函數(shù)操作對于什么是匿名函數(shù),這里就不做過多介紹了。我們需要知道的是,對于而言,匿名函數(shù)是一個(gè)很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個(gè)供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎(chǔ), 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果...
閱讀 2978·2021-10-15 09:41
閱讀 1636·2021-09-22 15:56
閱讀 2111·2021-08-10 09:43
閱讀 3285·2019-08-30 13:56
閱讀 1791·2019-08-30 12:47
閱讀 661·2019-08-30 11:17
閱讀 2779·2019-08-30 11:09
閱讀 2201·2019-08-29 16:19