本章帶給大家javascript中的六種資料類型是什麼? js的資料類型和常見隱式轉換邏輯(介紹),帶大家了解javascript中的六種資料類型,以及常見隱式轉換邏輯。有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
一、六種資料型別
#原始型別(基本型別):依值訪問,可以操作保存在變數中實際的值。原始類型匯總中null和undefined比較特殊。
引用類型:引用類型的值是保存在記憶體中的物件。
* 與其他語言不同的是,JavaScript不允許直接存取記憶體中的位置,也就是說不能直接操作物件的記憶體空間。在操作物件時,實際上是在操作物件的參考而不是實際的物件。所以引用類型的值是按引用存取的。
二、隱含轉換
#1、 和-
巧用和-規則轉換型別
把變數轉換成數字:num-0;
把變數轉換成字串:num '';
2、a==b
型別相同,同===
型別不同,嘗試型別轉換比較:
3、a===b
類型不同,回傳false
類型相同:
##三、包裝物件
基本型別中的number,string和boolean都有對應的包裝型別。 把一個基本型別嘗試用物件的方式使用它的時候,例如存取length屬性,或是增加一些屬性的運算時,javascript會把這些基本型別轉換為對應的包裝類型物件。完成這樣一個訪問例如a.length返回以後或是a.t設定了以後,這個臨時物件會被銷毀掉。所以a.t賦值3了以後,再去輸出a.t值是undefined。 str,number和true都有包裝類型,所以可以把數字用括號括起來呼叫toString()方法
四、型別偵測
javascript中型別偵測方法有很多:1、typeof
#最常見的就是typeof:# #比較特殊的是typeof null回傳「object」。
歷史原因,規範嘗試修改typeof null返回“null”修改完大量網站無法訪問,為了兼容,或者說歷史原因返回"object"。
typeof對基本型別和函數物件很方便,但是其他型別就沒辦法了。
判斷一個物件是不是數組?用typeof回傳“object”。對對象的判斷常用instanceof。
2、instanceof基於原型鏈運算。 obj instanceof Object。
左操作數為對象,不是就返回false,右操作數必須是函數物件或函數建構器,不是就回傳typeError異常。
原理:判斷左邊的左操作數的物件的原型鏈上是否有右邊這個建構子的prototype屬性。
任何一個建構函式都有一個prototype物件屬性,這個物件屬性將會用來當new出來的物件的原型。
bosn instanceof Person的時候發現bosn的原型也就是Student.prototype不等於Person.prototype,所以原型鏈還會向上找,bosn的原型的原型等於Person.prototype所以回傳true。
instanceof在判斷物件是不是數組,Data,正規等時很好用。
instanceof坑:不同window或iframe之間的物件類型偵測不能使用instanceof!
3、Object.prototype.toString
#需要注意的是IE6/7/8中Object.prototype.toString. apply(null)回傳「[object Object]」。
4、constructor
#任何物件都有constructor屬性,繼承自原型的,constructor會指向建構這個物件的構造器或者構造函數。
constructor可以被改寫,所以使用要小心。
5、duck type
例如不知道一個物件是不是數組,可以判斷它的length是不是數字,它是不是有join,push這樣一些數組的方法。透過一些特徵判斷物件是否屬於某些類型,這個有時候也常用。
總結:
6、如何偵測一個變數是字串
有另一個方法:將變數和空白字元拼接後再和原來變數做全等判斷
var str="hello"; var temp=str+''; temp===str //tru
以上是javascript中的六種資料型別是什麼? js的資料型別和常見隱式轉換邏輯(介紹)的詳細內容。更多資訊請關注PHP中文網其他相關文章!