1)基本数据类型
string、 number、null、undefined、 boolean、bigInt、symbol
Number类型中NaN不是有效数字但是属于Number类型,typeof NaN //=> ‘number‘ NaN === NaN // => false Object.is(NaN,NaN) // => true BigInt出现的意思是保证超出最大最小安全值仍然可以准确计算 console.log(Number.MAX_SAFE_INTEGER); //=>9007199254740991 console.log(Number.MIN_SAFE_INTEGER); //=>-9007199254740991 9007199254740991n =>bigint类型的
(2)引用数据类型【2】
1.typeof
能检测基本类型和函数类型,但是对于对象类型和null不能区分(null为计算机历史遗留问题)
typeof function(){} // ‘function’
typeof NaN // ‘number’
2.constructor
[].constructor === Array
3.instanceof
4.Object.prototype.toString.call()
Object.prototype.toString.call([]) // “[object Array]”
(1)转化为Number类型的情况
使用Number显式类型转换, 转换过程中,遇到对象会先toString然后在Number转换
例子:
Number()、Number(null)、Number("")、Number(false) 结果为 0
Number(undefined) 、 Number({})、 Number(‘wds’), 结果为 NaN
Number(true) , 转化结果为 1
Number([‘2222’]) 结果为 2222
Number([‘2222’,‘1111’]) 结果为NaN
Number(‘1,2’)
————————————————
使用加号减号等运算符隐式转换, 转换过程中,遇到对象会先toString然后在Number转换
例子:
‘123’ 结果为 123
[] 、+null、+false 结果为 0
{}、+ ‘abc’ 、+ undefined 结果为 NaN
true 结果为 1
1 + true 结果为 2
注意??: NaN + 任何数都是NaN、字符串和对象除外,会转成字符串拼接
NaN+123、NaN+ true、NaN+NaN 结果都为NaN
NaN + {} 结果为 “NaN[object Object]”
NaN + [] 结果为 “NaN”
使用isNaN进行检测的时候,会隐式转换为数字在检测,转换过程中,遇到对象会先toString然后在Number转换
原文:https://www.cnblogs.com/tooko/p/13289716.html