国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

類型檢查

robin / 1443人閱讀

摘要:類型檢查中有中基本數據類型,分別是還有一種復雜數據類型是松散類型的,所以使用以上種數據類型,就可以表示所有數據。從上面結果可以看到,使用在檢查數組,對象,正則表達式時都會返回如此模糊的類型檢查方法,應用場景也十分有限。

js 類型檢查

js中有5中基本數據類型,分別是:

 Undefined,Null,Boolean,Number,String

還有一種復雜數據類型

  Object

ECMAScript是松散類型的,所以使用以上6種數據類型,就可以表示所有數據。
那么,如何檢測變量的數據類型呢。

下面就介紹幾種在業務代碼中,常用的幾種常用類型檢查方法

typeof

typeof操作符用以獲取一個變量或者表達式的類型。

typeof一般只能返回如下幾個結果:
 - "number",  ------eg:  typeof 2 
 - "boolean",  -----     eg:  typeof false 
 - "string", --------       eg:  typeof "123" 
 - "function"(函數,),------ eg:  typeof function(){} 
 - "object"(null,數組,對象,正則表達式),  ---  typeof /s/ 
 - "undefined"。   ------    typeof hehe 
 

從上面結果可以看到, 使用typeof 在檢查 null,數組,對象,正則表達式時都會返回"object"
如此模糊的類型檢查方法,應用場景也十分有限。

instanceof

如果想知道一個變量到底是什么類型的 “object”,就可以使用instanceof,

  var pattern = /s/;
  var arr = [1,2,3];
  var obj = new Object();

  alert(pattern instanceof RegExp);   // true
  alert(arr instanceof Array);        //true
  alert(obj instanceof Object);        //true
  alert(null instanceof Object);      // false;

也可以用來檢查自己創建的變量:

var a = new Array(); 
console.log(a instanceof Array) // 返回true。 
console.log(a instanceof Object) // 返回  Array 是object 的子類。也會返回true.

但是這個操作符的問題在于它假定只存在一個全局的執行環境,存在多個框架的情景下,會存在兩個不同的數組構造函數,這里就引入了另一個方法來判斷數組

isArray()

ECMAScript5 新增的Array.isArray() 方法,無論執行環境,只有一個目的,判斷是不是數組

Object.prototype.toString.call()

原生的toString() 方法,都會返回一個[object NativeConstructorName] 格式的字符串,
通過判斷每個類在內部的[[Class]] 屬性,來檢查類型

    var a = new Array()
    Object.prototype.toString.call(a) == "[object Array]"`
    // 使用這種方法不僅可以判斷數組,還可以判斷其他類型。
   Object.prototype.toString.call(value) =="[object Function]"
    {}.prototype.toString.call(value) =="[object JSON]" //這種方法也可以 檢查原生的JSON對象
$.type

zeptov1.0+
具體用法可以查看 官網文檔,用法如下

$.type(object)   ? string
獲取JavaScript 對象的類型。可能的類型有:
null undefined boolean number string function array date regexp object error。

alert($.type([]))  // "array"
alert($.type("11"))  // "string"
alert($.type({}))    // "object"

然后,我們可以分析下,這個$.type 方法,使用的技巧是否不同于上面幾種類型檢查方法
查看 zepto@1.1.6 的源碼,基本和上面的 toString.call() 方法類似

type 方法的部分如下

  function type(obj) {
    return obj == null ? String(obj) :
      class2type[toString.call(obj)] || "object"
  }

代碼的關鍵部分,就是這個class2type 對象里面存放了所有數據類型對應的字符串,使用type 方法是,直接取class2type 里面的鍵值對即可。

再往下看,就可以發現 使用each 方法 ,遍歷所有可能的數據類型,為class2type賦值。

  $.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
    class2type[ "[object " + name + "]" ] = name.toLowerCase()
  })

這里得到的 class2type 結果是:

 {
   [object Array]:"array"
   [object Boolean]:"boolean"
   [object Date]:"date"
   [object Error]:"error"
   [object Function]:"function"
   [object Number]:"number"
   [object Object]:"object"
   [object RegExp]:"regexp"
   [object String]:"string"
}

當然,我們可以直接把class2type 對象拿來使用。

...

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87239.html

相關文章

  • 介紹幾款 Python 類型檢查工具

    摘要:近日,微軟在上開源了一個靜態類型檢查工具,引起了社區內的多方關注。在微軟推出之前,主流的靜態檢查工具有三款官方的出的出的。微軟的有個模式,應該是吸收了這點,而且更加好用因為不需要額外安裝和其它依賴。 showImg(https://segmentfault.com/img/bVbqujh?w=5700&h=3601);近日,微軟在 Github 上開源了一個 Python 靜態類型檢查...

    Alex 評論0 收藏0
  • Flow, 一個新的Javascript靜態類型檢查

    摘要:原文鏈接翻譯于今天我們興奮的發布了的嘗鮮版,一個新的靜態類型檢查器。為添加了靜態類型檢查,以提高開發效率和代碼質量。這最終形成一個高度并行增量式的檢查架構,類似。知道縮小類型范圍時做動態檢查的影響。 原文鏈接:https://code.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-java...

    liangzai_cool 評論0 收藏0
  • 第3章:抽象數據類型(ADT)和面向對象編程(OOP) 3.1數據類型類型檢查

    摘要:所有變量的類型在編譯時已知在程序運行之前,因此編譯器也可以推導出所有表達式的類型。像變量的類型一樣,這些聲明是重要的文檔,對代碼讀者很有用,并由編譯器進行靜態檢查。對象類型的值對象類型的值是由其類型標記的圓。 大綱 1.編程語言中的數據類型2.靜態與動態數據類型3.類型檢查4.易變性和不變性5.快照圖6.復雜的數據類型:數組和集合7.有用的不可變類型8.空引用9.總結 編程語言中的數據...

    zhangqh 評論0 收藏0
  • JavaScript 需要檢查變量類型

    摘要:一返回值調用外部方法獲取的值需要對類型做判斷,因為我們對方法返回的值是有期望值類型,但是卻不能保證這個接口返回的值一直是同一個類型。 19年目標:消滅英語!我新開了一個公眾號記錄一個程序員學英語的歷程 有提升英語訴求的小伙伴可以關注公眾號:csenglish 程序員學英語,每天花10分鐘交作業,跟我一起學英語吧 javascript作為一門動態類型語言,具有很高的動態靈活性,當定義函數...

    Songlcy 評論0 收藏0
  • 前端進階(5) - js 擴展:靜態類型檢查(facebook flow)

    摘要:擴展靜態類型檢查語言與系列等語言有一點很大的不同,就是語言是弱類型語言。但其實很多開發人員還是比較喜歡用來開發項目,所以開發出來幫助語言擴展靜態類型檢查功能,規避上面提到的問題。 js 擴展:靜態類型檢查(facebook flow) js 語言與 java、C 系列等語言有一點很大的不同,就是 js 語言是弱類型語言。js 語言的這個特性可能讓大家覺得 js 很自由,沒有強制性的約束...

    孫淑建 評論0 收藏0
  • HelloType:JS運行時數據類型檢查工具

    摘要:進入主頁使用文檔是一個設計簡單的運行時的數據類型檢查工具,它可以幫助你的程序在使用某個組變量前,對變量的數據類型進行檢查,防止在使用變量進行運算時由于數據類型不同導致報錯。 showImg(https://segmentfault.com/img/bVbfW41?w=1380&h=500); 進入GitHub主頁使用文檔 HelloType是一個api設計簡單的js運行時的數據類型檢查...

    Heier 評論0 收藏0

發表評論

0條評論

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