JS資料型別
阿新 • • 發佈:2020-09-08
JS中的7+2中資料型別及區別
基礎資料型別
- number
- string
- boolean
- null
- undefined
- symbol
- bingint
引用資料型別
- object
- function
資料型別檢測
- typeof 檢測資料型別的邏輯運算子
- instanceof 檢測是否為某個類的例項
- constructor 檢測建構函式
- Object.prototype.toString.call 檢測資料型別
tyoeif [value] 返回當前的資料型別 “資料型別”
返回的結果都死字串
侷限性
- typeof null = "object"
- tyoeof undefined = "undefined"
- typeof 不能細分物件型別(檢測普通物件或者陣列物件都是"object")
number型別
- NaN:不是一個有效數字,屬於number型別,NaN != NaN,他和誰都不相等 typeof NaN = "number"
- isNaN(值):檢測這個值是否為無效數字,如果不是有效數字返回TRUE,是有效數字返回FALSE
- infinity: 無窮 屬於number型別
把其他資料型別轉換為數字的方法
- 強轉換(基於底層機制轉換的)Number([value]
一些隱式轉換都死基於Number完成的
- isNaN('12px')先把其他型別轉換為數字在檢測
- 數學運算 '12px' - 13
- 字串 == 數字
- true 1 false 0
- null 0 undefined NaN
- 字串中必須保證都是有效數字才會轉換為數字,否則都是NaN
- parseInt處理的值是字串,從字串的左側開始查詢有效數字字元(遇到非有效數字字元則停止查詢),如果處理的值不是字串,需要先轉換為字串然後再開始查詢。
+運算子
再兩邊出現字串(或者物件)的情況下,加號一定是字串拼接 ,物件本身是要轉換為數字進行運算的,只不過轉換數字的過程中,需要先轉換為字串,才能轉化為數字,而一旦轉換為字串,就變為字串拼接了
console.log(100 + true + 21.2 + null + undefined +"Lemon" + [] + null + 9 + false)
->NaNLemonnull9false
- 100 + 1(true) + 21.2 + 0(null) -> 122.2 number
- 122.2 + NaN(undefined) -> NaN number
- NaN + 'Lemon' + '' + 'null' + '9' + 'false' -> >NaNLemonnull9fa;se
比較運算子
- == 在進行比較的時候,如果左右兩邊資料型別不一致,則需要先預設轉換為一致的資料型別,然後在進行比較
- === 絕對相等,兩邊型別一致,值也一致才相等,型別不一樣,直接不對等,不會轉換
== 規則
- 物件 == 字串 物件轉換為字串
[10] == '10' true- null == undefined(三個等於號不相等),但是和其他任何的值都不想等
0 == null false 0在記憶體中開闢空間, null沒有在記憶體中開闢空間
NaN和誰(包括自己)都不相等
剩下的情況都轉換為數字在做比較
把其他型別轉換為布林型遵循的規則
只有
- 0
- NaN
- null
- undefined
- ""
這五個值是false(僅限JS引擎)