二、Js数据类型
-
基本类型:string、number、boolean、undefined、null、symbol(ES6)、bigint(ES6)
-
引用类型:object(包括function、arrays…)
1、类型转换:
-
boolean与number:布尔转成数字(false = 0,true = 1)
-
string与其他:都会被转成字符串类型
注意:NaN(Not a Number)是number中的一种列外,不是一种数据类型
console.log(true + 1) //2
console.log(undefined + true) //NaN
console.log(true + 'name') //truename
console.log(undefined + 1) // NaN
console.log(1 + 'name') //1name
2、null与undefined
-
最先设计出表示’无’值的是null(由java作为参考)
-
null问题:可以转换为0,很难发现错误,因此不是最好的‘无’值
-
由此,诞生了undefined:作为真正的‘无’原始值
-
null本质:空对象指针(对象 = 引用数据类型)
-
undefined本质:无原始值(基本数据类型)
console.log(typeof null) //object
console.log(Number(null)) //0
console.log(Number(undefined)) //NaN
3、== vs ===
-
==:对比值(通过valueof方式进行隐式转换)
-
===:对比值 + 数据类型(需要值和数据类型完全一致:更严谨)
console.log('1,2' == [1,2]) //true
console.log('1,2' === [1,2]) //false