JavaScript – 数据类型

前言

写着 TypeScript 学习笔记, 顺便也写点 JS 的呗.

 

参考

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());

效果