成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關于javascript中類型判斷的那些疑惑

李增田 / 682人閱讀

摘要:對于復雜類型它的每個實例都有屬性。當檢測實例時優(yōu)于因為能檢測這段代碼是從的。補充以下結果,發(fā)現(xiàn)第三種方法也能正確判斷出。我們知道結果是那如何判斷兩個變量呢比較兩個變量,使用的即可。

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

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

復雜數(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"

來點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ù)組類型呢

instanceof

arr instanceof Array  //true

isArray

Array.isArray(arr) // true

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

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/98312.html

相關文章

  • JavaScript專題系列20篇正式完結!

    摘要:寫在前面專題系列是我寫的第二個系列,第一個系列是深入系列。專題系列自月日發(fā)布第一篇文章,到月日發(fā)布最后一篇,感謝各位朋友的收藏點贊,鼓勵指正。 寫在前面 JavaScript 專題系列是我寫的第二個系列,第一個系列是 JavaScript 深入系列。 JavaScript 專題系列共計 20 篇,主要研究日常開發(fā)中一些功能點的實現(xiàn),比如防抖、節(jié)流、去重、類型判斷、拷貝、最值、扁平、柯里...

    sixleaves 評論0 收藏0
  • JS程序

    摘要:設計模式是以面向對象編程為基礎的,的面向對象編程和傳統(tǒng)的的面向對象編程有些差別,這讓我一開始接觸的時候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續(xù)了解設計模式必須要先搞懂面向對象編程,否則只會讓你自己更痛苦。 JavaScript 中的構造函數(shù) 學習總結。知識只有分享才有存在的意義。 是時候替換你的 for 循環(huán)大法了~ 《小分享》JavaScript中數(shù)組的那些迭代方法~ ...

    melody_lql 評論0 收藏0
  • 那些年,前端學習之路疑難雜癥(三):數(shù)組和Date一些梳理

    摘要:將指定的數(shù)字索引值轉換成字符串索引值變成,然后將其作為屬性名來用。返回一個由刪除元素組成的數(shù)組。該方法返回的數(shù)組元素是調用的數(shù)組的一個子集。使用的函數(shù)有四個參數(shù)初始值積累值數(shù)組元素元素索引數(shù)組本身。 前言 很多人在學習原生JS的過程中會遇到一些疑惑,比如在學習array時,就很容易搞不清哪些方法會改變原來數(shù)組,哪些方法不會改變原來數(shù)組?再比如很多人會使用new Date()獲取時間,卻...

    xeblog 評論0 收藏0
  • JS編譯之 LHS RHS(你不知道JavaScript 小記一)

    摘要:關于兩個專業(yè)術語的討論起自對你不知道的一書的閱讀學習。遇到,編譯器會詢問作用域是否已經(jīng)有一個該名稱的變量存在于同一個作用域的集合中。摘錄來自你不知道的。 JS 編譯之 LHS RHS 一、前言 最近和朋友聊技術的時候,聊到 LHS RHS,我竟然沒聽說過 沒聽說過。。。 于是成功引起了我的好奇心。 關于兩個專業(yè)術語的討論起自對《你不知道的JavaScript》一書的閱讀學習。 二、編譯...

    Cristic 評論0 收藏0
  • JavasScript重難點知識

    摘要:忍者級別的函數(shù)操作對于什么是匿名函數(shù),這里就不做過多介紹了。我們需要知道的是,對于而言,匿名函數(shù)是一個很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎, 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機制,如果...

    forsigner 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<