首頁 > web前端 > js教程 > 分享JavaScript類型之間的比較

分享JavaScript類型之間的比較

零下一度
發布: 2017-06-26 13:26:57
原創
1107 人瀏覽過

JavaScript的類型

原始類型:

  • number

  • string

  • boolean

  • null

  • #undefined

物件類型:

  • Object

  • function

  • #Array

  • Date

  • ...

隱含轉換

#+/- 運算

  • "37" + 7 = "377"

"37" - 7 = 30

==

運算
  • 以下為true:

  • "1.23" == 1.23

  • 0 == false

null == undefined

#比較運算

    ===
  • 嚴格等於

  • 類型不同,回傳false

  • 類型相同,以下為true:

  • null === null

  • undefine === null

  • NaN != NaN

new Object != new Obejct

    ==
  • 等於

    #類型相同,同
  • ===
  • ##型別不同,嘗試型別轉換比較
  • null == undefined
  • number == string 轉number
  • boolean == ? 轉number
  • #Object == number | string 嘗試物件轉換為基本型別
  • 其他:false

包裝類型

為了方便操作基本型別值,Js提供了基本型別的自動包裝功能,每單讀取一個基本型別值的時候,後台會建立一個對應的基本包裝類型的對象,並在呼叫後自動銷毀。

由於基本包裝類型和基本類型的意義並不一樣,會導致typeof等操作產生不同的結果,不建議顯示實例化基本資料型別

var a = "string";
alert(a.length);    //6

a.t = 3;
alert(a.t);         //undefined
登入後複製

型別偵測

typeof

以下為true:

typeof 100 === “number”
typeof true === “boolean”
typeof function () {} === “function”
typeof(undefined) ) === “undefined”
typeof(new Object() ) === “object”
typeof( [1, 2] ) === “object”
typeof(NaN ) === “number”   //NaN也为number
typeof(null) === “object”
登入後複製

instanceof

#obj instanceof Object

利用原型鏈進行判斷,適用於物件間判斷。它期望左邊是一對象,右邊是函數物件或函數建構器。

以下為true:

[1, 2] instanceof Array === true
new Object() instanceof Array === false
登入後複製

Object.prototype.toString.apply()

Object.prototype.toString.apply([]); === “[object Array]”;
Object.prototype.toString.apply(function(){}); === “[object Function]”;
Object.prototype.toString.apply(null); === “[object Null]”
Object.prototype.toString.apply(undefined); === “[object Undefined]”

// IE6/7/8 Object.prototype.toString.apply(null) 返回”[object Object]”
登入後複製
    小結

  • typeof
  • 適合基本類型及function檢測,遇到null失效。

  • [[Class]]
  • 透過{}.toString拿到,適合內建物件和基底類型,遇到null和undefined失效(IE678等返回[object Object] )。

  • instanceof
  • 適合自訂對象,也可以用來偵測原生對象,在不同iframe和window間偵測時失效。
#######

以上是分享JavaScript類型之間的比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板