JavaScript – 資料型別
阿新 • • 發佈:2022-05-06
前言
寫著 TypeScript 學習筆記, 順便也寫點 JS 的唄.
參考
JS 資料型別
string
number
boolan
undefined
null
object
symbol
bigint
其中 symbol 和 bigint 是後來加進去的
另外還有一些很常見但其它它們不能說是型別. array, function, class, arrow function, NaN, Regex, Date
typeof
typeof 是用來判斷型別的.
console.log('string', typeof 'string'); console.log('number', typeof 1); console.log('boolean', typeof true); console.log('undefined', typeof undefined); console.log('null', typeof null); console.log('object', typeof {}); console.log('symbol', typeof Symbol('v')); console.log('bigint', typeof (100n));
結果
只有一個奇葩, null = object. 這個是歷史原因.
另一組
console.log('array', typeof[]); console.log('function', typeof function() {}); console.log('arrow function', typeof (() => {})); console.log('date', typeof new Date()); console.log('reg', typeof /\d/gi); console.log('NaN', typeof NaN); console.log('class', typeof class{});
結果
我們先講好理解的, function, arraw function 都是 function, JS 的 class 其實也是 function, 所有它們三都是 function, 沒問題.
reg, date 都是 new 出來的物件, 沒問題
最後只剩下 array = object, NaN (not a number) = number 比較亂水了. (背起來唄)
型別判斷方式
除了用 typeof 還有一些常用的技巧
判斷 null
null === null
判斷 NaN
isNaN(NaN)
判斷 Array
Array.isArray([])
判斷 Date, Regex
(new Date()) instanceof Date
黑魔法 typeof
console.log('string', Object.prototype.toString.call('string').slice(8, -1).toLowerCase());
效果