JavaScript – 数据类型
前言
写着 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());
效果