undefined和null的区别
-
undefined
是声明后没有赋值的结果,表示没有值 -
null
是有值,它的值就是null
-
null
表示一个空对象指针 -
undefined
存在的意义主要是为了做判断,判断一个变量或者对象的属性是否有值 - 不要声明一个变量为
undefined
的,但是可以声明一个变量为null,如果一个要保存对象的变量还没有保存对象,就可以给它赋值null
NaN
-
NaN
表示不是一个数字 -
0/0
会返回NaN
,此后再参与计算的值都是NaN
-
isNaN()
这个函数并不是用来判断一个值是不是NaN
,而是用来判断一个值是否不是数值,这个函数应该叫isNoNumber()
,所有能用Number
转化成数字的值,都会返回true
,不能转化为数字的值,返回false
数值
- 浮点数计算会产生误差,因为
js
基于IEEE754
数值的浮点计算,浮点数的最高精度是17位小数。 - 数值范围,最小值:
Number.MIN_VALUE
,5e-324
,最大值:Number.MAX_VALUE
,1.7976931348623157e+308
。Infinity
表示无穷大,当一个运算的结果超出最大值时得到的结果就是Infinity
,小于最小值时得到的结果就是-Infinity
- 可以用
isFinite()
这个函数来判断一个值是否位于最大最小之间
数值转换
转化数字的方法有Number()
, parseInt()
,parseFloat()
-
Number()
中只要有字母,就会转化成NaN
,不识别二进制,八进制,可以识别16进制。 -
parseInt()
会忽略字符串之前的空格,如果第一个字符不是数字或者负号就会返回NaN
,直到解析到第一个不是数字的字符,Number
对于空字符串会返回0,parseInt()
会返回NaN
。并且parseInt()
可以识别各种进制(ES5
以后,不能解析8进制),parseInt()
支持第二个参数,进制。 -
parseFloat()
也是会忽略字符串之前的空格,如果第一个字符不是数字或者负号就会返回NaN
,直到解析到第一个不是无效的浮点数字字符,不支持进制,没有第二个参数。
String类型
- 字符串是不可变的,字符串一旦创建,它们的值就不能改变
- 要把一个值转变为字符串有两种方法,使用几乎每个值都有的
toString()
方法,toString()
可以输出任意有效进制格式的值,null
和undefined
没有这个方法,要想转化null``和undefined
,可以使用转型函数String()
。还有一种方式就是直接加“”
字符串。
操作符
- 递增与递减操作符,可以放在变量的前置也可以放在后置,它们最重要的区别就是:前置的时候变量的值都是在语句被求值前改变的。
- 位操作符,求一个负数的二进制码,负数的二进制码的格式是二进制补码,要计算一个数值的二进制补码,需要以下步骤
- 求这个数值的绝对值的二进制码
- 求二进制反码
- 得到的二进制反码加1.
函数
- 未指定函数返回值的时候,函数会返回
undefined
。