Skip to content

数据类型

数字

js
Number('0.00') === 0
Number('0') === 0
Number(null) === 0
Number(undefined) === NaN // 没有有效结果
Number([]) === 0
Number({}) === NaN
Number(true) === 1

逻辑值

0、NaN(Invalid Number)、空字符串("")、null、undefined 视为 false,其余值视为 true

类型判断

  • 如果要使用某种数据类型的方法,最好在开始检测数据类型,以免传入不合适的类型导致错误
  • 有效值类型用typeof,null/undefined 直接用全等===,引用类型需要另外方法
js
// 检测数字
typeof 1 === 'number'

// 检测字符串
typeof '1' === 'string'
typeof new String('a') // object
'1' instanceof String  // false

typeof [1, 2] //"object"   无法区分数组和对象
typeof new Date() // 'object'

// 检测数组
xxx instanceof Array
xxx.constructor === Array

// 严格检测对象,可排除 null Date Math 等
// toString.call 任意 Object 都可以判断
const isObject = (arg) => Object.prototype.toString.call(arg) === '[object Object]';

第 21 题:有以下 3 个判断数组的方法,请分别介绍它们之间的区别和优劣 | 木易杨前端进阶

类型转换

js
undefined == null // 两个值转换为 false,结果是 true

原始类型,意味着不可变,相等性判断都可以用===,而对象可以修改

null 空对象,是特殊原始类型,不能用 typeof 检测出

BigInt

JavaScript data types and data structures - JavaScript | MDN

Symbol 原子、唯一

js
'1' + '0' + 0 // 100 字符串拼接
'1' - '0' // 1 减法,转成数字