一. 前言
javascript有7种内置对象,7种内置对象又分两种:基本类型、对象
(1)基本类型:null
、undefined
、boolean
、string
、number
、symbol
(2)对象:Object,引用类型,所以会涉及到浅拷贝和深拷贝的问题
二. 分类详解
1. typeOf判断类型
typeOf对于基本类型,除了NaN
之外,都能显示正确的类型。
typeOf 1 // 'num'
typeOf '1' // 'string'
typeOf undefined // 'undefined'
typeOf true // 'boolean'
typeOf Symbol() // 'symbol'
typeOf对于对象,除了函数之外,都显示object
typeOf [] // 'object'
typeOf {} // 'object'
对于null
来说,虽然它是基本类型,但是还会显示object
typeOf null // 'object'
2. 详解数据类型:NaN
规则:
NaN
虽然不是数字,但是它的数据类型是数字
typeOf NaN; // number
NaN
是JavaScript中唯一不等于自身的值,不等于任何值,包括它自己都不行
NaN === NaN // false
NaN == NaN // false
NaN
在布尔运算时,被视为false
Boolean(NaN) // false
NaN
与任何数运算,结果都是NaN
NaN + 1 // NaN
- 由于数组indexOf()方法,内部使用的是严格相等,所以,该方法对
NaN
是不成立的
[NaN].indexOf(NaN); // -1
如何判断NaN
方法
- 全局函数isNaN()
isNaN()会将括号内的参数利用Number()进行一次转换,如果转换的结果是NaN -> 返回true,否则返回false
isNaN('NaN') // true
isNaN({}); //true
isNaN(['xzy']); //true
isNaN(undefined); //true
isNaN([]); // false
isNaN(null); // false
isNaN('3'); // false
- Number.isNaN()
与全局函数相比,该方法不会强制将参数转化为数字,只是在参数是真正的数字类型,且值为NaN的时候才会返回true
Number.isNaN(NaN) // true
- 利用NaN是JavaScript中唯一一个自身不等的值的特性
function isNaN(value) {
return value != value;
}
三. 参考链接:
https://www.jianshu.com/p/747d7ee493fc