文章目录
7种基本数据类型
- Object 对象 包括狭义的对象Object、数组Array和函数Function。
- Boolean 布尔值
- Undefined 未定义的值,表示未赋值的初始化值
- Null 空值
- String 字符串类型
- Number 数字类型
- symbol
特殊的number类型
Infinity 表示无穷大特殊值
NaN 特殊的非数字值
Number.MAX_VALUE 可表示的最大数字
Number.MIN_VALUE 可表示的最小数字(与零最接近)
Number.NaN 特殊的非数字值
Number.POSITIVE_INFINITY 表示正无穷大的特殊值
Number.NEGATIVE_INFINITY 表 示负无穷大的特殊值
JS内置了isNaN()函数,来确定数值是不是NaN类型。
注意:NaN ①任何涉及NaN的操作都会返回NaN。②NaN对任何值都不相等,包括NaN本身
isNaN() 函数用于检查其参数是否是非数字值。
isNaN()函数对参数的转换
- 引用数据类型 object, 先通过 toString 方法转化成字符串,再通过 Number 方法转化成数字类型
- 其他基本类型 直接使用 Number 方法转化成数字类型
isNaN(NaN); // true
isNaN(true); // false Number(true) //1
isNaN(false); // false Number(false) //0
isNaN(37); // false
isNaN('37'); // false
isNaN(null); // false Number(null) //0
isNaN(undefined); // true Number(undefined) //NaN
isNaN({}); // true
isNaN([12,34]); // true
[12, 34].toString() //12,34 Number('12, 34') //NaN
布尔值为false的6种情况
Boolean对象只有两种取值,true或者false
- undefined
- 0或者NaN
- null
- false(布尔值的false,字符串"false"布尔值为true)
- ''或"" 空字符串,中间有空格是true
console.log(Boolean('false')) //true
console.log(Boolean(false)) //false
console.log(Boolean(''))//false
console.log(Boolean(' '))//true
基本数据类型的转换
- 主动转换
- 转为number类型
parseInt()或者parseFloat() - 转为String类型
String()或者toString(),区别在于前者可以转换任意类型的数据,后者不能转换null和undefined - 转为boolean类型
Boolean()
- 自动转换
- 比较运算(==、!=、>、<)、if、while需要布尔值地方
- 算术运算(+、-、*、/、%)
+ 会自动转为字符串,其他运算符会转为number类型
typeof 检测数据类型
- 返回值是字符串(基本数据类型)。
- 缺点:typeof在判断null、array、object以及函数实例(new + 函数)时,得到的都是object,不能进一步进行判断。
instanceof 检测是否为某个类的实例
- 返回值为布尔值。
- instanceof 代码形式为obj1 instanceof obj2(obj1是否是obj2的实例),obj2必须为对象,否则会报错
- instanceof的判断逻辑: 从当前引用的proto一层一层顺着原型链往上找,能否找到对应的prototype。找到了就返回true
let arr = [12, 34]
console.log(typeof null)//object
console.log(typeof arr)//object
console.log(arr instanceof Array)//true
console.log(null instanceof Object) //false