一. 基本数据类型
目前有7大数据类型:
number
、string
、boolean
、undefined
、null
、symbol
、bigInt
<1> number
值的范围
ES 可以表示的最大值保存在 Number.MAX_VALUE中,最小值保存在Number.MIN_VALUE 中,超过这两个范围,就会被自动转化成一个特殊的值 Infinity 或者 - Infinity ,无穷大、无穷小的意思,这两个值不能参与任何运算!!!
(1) NaN
NaN
是number
的一种类型,用来表示不是数值。
typeof NaN // number
例:
- 0 / 0 ------> NAN
- 5 / 0 ------> Infinity
注意:
- 涉及 NaN 的操作始终返回 NaN
- NaN 不与包括 NaN在内的任何值相等!!!
NaN == NaN // false
补:isNaN() 与 Nunber.isNaN() 的区别:
-
isNaN() 会先对传入的参数进行类型转换,转换为
数字number
类型,如果不能进行转换就会返回 true ,可以就返回 false -
Number.isNaN() 不会对传入的参数进行类型转换,会直接判断传入的参数是否为
数字number
类型,如果不是,直接返回 false;如果是,才会进一步判断是否为 NaN 。- console.log(isNaN('aaa')); // true console.log(Number.isNaN('aaa')) // false
-
所以说 Number.isNaN() 进行的判断更准确!!!
(2) 0.1 + 0.2 !== 0.3
那怎么使 0.1 + 0.2 = 0.3
// 用 toFixed(n) 方法,进行四舍五入,保留传入的参数,n位小数
(0.1 + 0.2).toFixed(2) // 0.30
<2> string
字符串是不可改变的,要修改,需要先销毁原先的字符串
<3> undefined
undefined
是一个假值!!!
- 对于
未声明
和声明了但没有赋值进行初始化
的,用typeof都会返回 undefined
<4> null
null
主要用于赋值给一些可能会返回对象的变量,作为初始化。使其初始化为null(空)
注意:
null == undefined //true
null === undefined // false
<5> boolean
<6> symbol
let a = Symbol("foo") let b = Symbol("foo")
a == b // false
- 如果要共享和重用 Symbol 实例 ,可以用 Symbol.for() 方法,例如 Symbol.for("a") 会先检查全局有没有用字符串"a" 注册的符号,有就用它,没有就新建一个。
- 可以用来做属性名