JS資料型別分為簡單資料型別(基本資料型別)和復雜資料型別(參考資料型別),
基本資料型別:Undefined、Null、Boolean、Number、String、Symbol,
參考資料型別:Object,
可以通過typeof運算子判斷以上7種資料型別,語法:typeof 變數,回傳值如下:
- "undefined" —— 如果這個值未定義;事實上,如果這個變數未宣告,回傳值也是undefined
- "boolean" —— 如果這個值是布林值
- "string" —— 如果這個值是字串
- "number" —— 如果這個值是數值
- "object" —— 如果這個值是物件或null
- "symbol" —— 如果這個值是Symbol函式生成的
- "function" —— 如果這個值是函式
資料型別
-
Undefined型別
- 只有一個值:undefined
- 宣告變數后未經初始化,則默認值是undefined;所以沒必要將一個變數顯性地設定為undefined
-
Null型別
- 只有一個值:null
- 空物件指標
- undefined派生自null,所以它們的相等性測驗 undefined == null 回傳 true
- 與undefined不同的是,只要意在保存物件的變數還沒有真正保存物件,就應該明確地讓變數初始化為null
-
Boolean型別
-
只有兩個值:true 和 false
-
其它型別值轉換為Boolean值,呼叫轉型函式Boolean()
資料型別 轉換為true值 轉換為false值 Boolean true false String 非空字串 空字串("") Number 非0數字值 0和NaN Object 任何物件 null Undefined 無 undefined
-
-
Number型別
- 字面量
- 整數
- 十進制:ddd,d:0~9
- 八進制: 0ddd,d:0~7,嚴格模式下無效,會導致支持嚴格模式地JS引擎拋出錯誤
- 十六進制:0xddd,d:09及AF(小寫也可以)
- 浮點數值
- 合法寫法
- '1.1'
- '0.1'
- '.1' --> 0.1
- '1.' --> 整數 1
- '1.0' --> 整數 1
- 極大極小值,用e表示
- 3.125e7 --> 31250000
- 3e-7 --> 0.0000003
- 最大精度17位
- 0.1 + 0.2 != 0.3
- 合法寫法
- 整數
- 數值范圍
- Number.MIN_VALUE
- Number.MAX_VALUE
- 超范圍顯示Infinity和-Infinity --> Number.POSITIVE_INFINITY和Number.NEGATIVE_INFINITY
- 函式isFinite():引數在極小和極大之間回傳true,否則false
- NaN
- Not a Number
- NaN == NaN 回傳 false
- 函式isNaN():引數先被轉換成Number型別,轉換后的結果是NaN回傳true,否則false;引數是物件,會先呼叫valueOf()方法,如果回傳值能轉換為數值,則進行測驗,否則再呼叫toString()方法,進行測驗
- 數值轉換
-
Number()
資料型別 Number()轉換后結果 Boolean 1和0 Number 無變化 Null 0 Undefined 0 String 只包含數字(包括前面帶正號或負號的情況)--> 十進制數值,如"-123" --> 123,"077" --> 77(不會被認為是八進制);
有效浮點格式 --> 浮點值;
十六進制(0x) --> 十進制數值;
其它 --> NaNObject valueOf()→若是NaN(比如Object物件)→toString()→再按以上規則 -
parseInt()
- 字串從前往后取數字(符合整數格式),碰到非數字停止
- 第二個引數指定進制,如8,10,16
-
parseFloat()
- 同上(符合浮點格式)
-
注:valueOf()
- 物件原型方法:回傳物件的原始值,
- 查看物件的原始值辦法


-
- 字面量
-
String型別
- 字符:16位Unicode
- "" 或 ''
- 轉義字符:\
- 其它型別轉換為String型別
- toString()
- Boolean、Number、String、Object都有toString()方法
- Null、Undefined沒有toString()方法
- Object.prototype.toString.call():可以查看資料型別
- 轉型函式String()
- 有toString()方法的呼叫toString()
- null --> "null"
- undefined --> "undefined"
- toString()
- 字串拼接
- 新開辟空間,拼接字串,洗掉原字串
-
Symbol型別
- ES6引入的一種新的原始資料型別Symbol,表示獨一無二的值
- 通過Symbol()函式生成,可傳入引數用作描述
- 應用:保證屬性名獨一無二,防止屬性名沖突


- Symbol()生成的屬性名不能被for...in,for...of,Object.keys()、Object.getOwnPropertyNames()、JSON.stringify()訪問到,但可以用Object.getOwnPropertySymbols(obj)獲取
- Reflect.ownKeys(obj)也可以回傳所有型別的鍵名,包括常規鍵名和Symbol鍵名
-
Object型別
- Object 就是一組資料和功能的集合
- 所有物件的基礎,如Function、Array、Date
- Object每個實體都有:constructor、hasOwnProperty(propertyName)、isPropertyOf(object)、propertyIsEnumerable(propertyName)、toLocaleString()、toString()、valueOf()
檢測資料型別
- 運算子 typeof
- 能檢測出的型別:Undefined、Null、Boolean、Number、String、Object、Symbol和函式
- 運算子 instanceOf
- 區分具體物件型別,如 [1,2,3] instanceof Array --> true ; 1 instanceof Number --> true
- null、undefined不行
- 方法 constructor()

- 同instanceof
- 方法 toString()
- 能檢測出的型別:所有
參考
- JavaScript高級程式設計(v3)Nicholas C.Zakas著 李松峰 曹力譯
- ES6標準入門(v3)阮一峰著
- 互聯網
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/170824.html
標籤:JavaScript
上一篇:源生JS實作點擊復制功能
