首頁  >  文章  >  web前端  >  javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

青灯夜游
青灯夜游原創
2018-09-17 17:58:461590瀏覽

本章帶給大家javascript中的六種資料類型是什麼? js的資料類型和常見隱式轉換邏輯(介紹),帶大家了解javascript中的六種資料類型,以及常見隱式轉換邏輯。有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

一、六種資料型別

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

#原始型別(基本型別):依值訪問,可以操作保存在變數中實際的值。原始類型匯總中null和undefined比較特殊。

引用類型:引用類型的值是保存在記憶體中的物件。

* 與其他語言不同的是,JavaScript不允許直接存取記憶體中的位置,也就是說不能直接操作物件的記憶體空間。在操作物件時,實際上是在操作物件的參考而不是實際的物件。所以引用類型的值是按引用存取的。

二、隱含轉換

#1、 和-

巧用和-規則轉換型別

把變數轉換成數字:num-0;

把變數轉換成字串:num '';

2、a==b

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

型別相同,同===

型別不同,嘗試型別轉換比較:

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

3、a===b

類型不同,回傳false

類型相同:

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

##三、包裝物件

基本型別中的number,string和boolean都有對應的包裝型別。

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

把一個基本型別嘗試用物件的方式使用它的時候,例如存取length屬性,或是增加一些屬性的運算時,javascript會把這些基本型別轉換為對應的包裝類型物件。完成這樣一個訪問例如a.length返回以後或是a.t設定了以後,這個臨時物件會被銷毀掉。所以a.t賦值3了以後,再去輸出a.t值是undefined。

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

str,number和true都有包裝類型,所以可以把數字用括號括起來呼叫toString()方法

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

四、型別偵測

javascript中型別偵測方法有很多:

  • typeof

  • instanceof

  • Object.prototype.toString

  • constructor

  • duck type

1、typeof

#最常見的就是typeof:

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)# #比較特殊的是typeof null回傳「object」。

歷史原因,規範嘗試修改typeof null返回“null”修改完大量網站無法訪問,為了兼容,或者說歷史原因返回"object"。

typeof對基本型別和函數物件很方便,但是其他型別就沒辦法了。

判斷一個物件是不是數組?用typeof回傳“object”。對對象的判斷常用instanceof。

2、instanceof

基於原型鏈運算。 obj instanceof Object。

左操作數為對象,不是就返回false,右操作數必須是函數物件或函數建構器,不是就回傳typeError異常。

原理:判斷左邊的左操作數的物件的原型鏈上是否有右邊這個建構子的prototype屬性。

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)任何一個建構函式都有一個prototype物件屬性,這個物件屬性將會用來當new出來的物件的原型。

bosn instanceof Person的時候發現bosn的原型也就是Student.prototype不等於Person.prototype,所以原型鏈還會向上找,bosn的原型的原型等於Person.prototype所以回傳true。

instanceof在判斷物件是不是數組,Data,正規等時很好用。

instanceof坑:不同window或iframe之間的物件類型偵測不能使用instanceof!

3、Object.prototype.toString

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

#需要注意的是IE6/7/8中Object.prototype.toString. apply(null)回傳「[object Object]」。

4、constructor

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

#任何物件都有constructor屬性,繼承自原型的,constructor會指向建構這個物件的構造器或者構造函數。

constructor可以被改寫,所以使用要小心。

5、duck type

 例如不知道一個物件是不是數組,可以判斷它的length是不是數字,它是不是有join,push這樣一些數組的方法。透過一些特徵判斷物件是否屬於某些類型,這個有時候也常用。

總結:

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)

6、如何偵測一個變數是字串

有另一個方法:將變數和空白字元拼接後再和原來變數做全等判斷

var str="hello";
var temp=str+'';
temp===str
//tru


以上是javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn