JS中的数据类型
-
基本数据类型:Number、String、Boolean、null、undefined、Symbol
-
引用数据类型:object其中包含array、data、function等等
-
涉及知识点:
-
装箱和拆箱
let str = new String('string') -
typeof
值 结果 undefined undefined 'string' (字符串类型) string 123、NaN number true,false boolean let a = Symbol('a') symbol {}、[]、null等 object function () {} function -
undefined 和 null
- null 表示这个值被定义了,但这个值为空,undefined 表示原本此位置该有值,但现在此值未定义
- 两者在 if 判断语句中,都会被转换为false
- undefined派生自null,因此在用
==判断时为ture - undefined 表示未定义,而 null 则未空
- 在 Number 中的转换值不同,
Number(null)的值未0,而Number(undefined)的值为NaN - typeof(undefined) 的值为 undefined 而typeof(null) 的值为 object
-
NaN
- 含意为 Not a number,用来检测是否为数字
- NaN并不等于自身,如
Number(test`)==NaN 值为false isNaN()用来判断该值是否为 NaN,还可以使用Object.is(NaN,NaN)typeof的值为 number
-
0.1+0.2 结果不为0.3
- 原因,基于IEEE754数值的浮点计算的通病。
- 解决方法,可以使用其他方式进行判断,如
(0.1*10+0.2*10)/10 == 0.3或者可以使用Number.EPSILON来进行判断0.1+0.2-0.3<Number.EPSILON
-
数组检测方法
- instanceof 判断是否在一条原型链上
arr instanceof Array - constructor 属性进行判断
arr.constructor == Array - Array.isArray 检测是否为数组
- typeof 也可以进行判断,只不过麻烦一点
typeof arr.__proto__.push == function()用typeof判断实例的原型中是否有 Array 的方法,如果有,就为数组
- instanceof 判断是否在一条原型链上
-
== 和 ===
- 双等表示值相同,类型可以不同,===表示类型也必须相同
-
Object 的知识点过于多,建议寻找更系统的资料查看
-
BigInt 类型:是一种内置对象,可以表示大于 253 的整数。而在Javascript中,
Number基本类型可以精确表示的最大整数是 253。BigInt可以表示任意大的整数。在MDN中被归为基本数据类型
-

浙公网安备 33010602011771号