本博客应该会随着我看书的进度不定期更新吧,加油!
应该只会记录自己认为自己不熟悉的点,比较简单的就不做记录啦。纯属自身学习帮助用的~
数据类型
一共有五种简单数据类型:
- Boolean
- Number
- String
- Null
- Undefined
typeof
可以获取变量类型。
Undefined
一般来说声明了变量然而没有初始化的话会返回undefined。
一个比较奇怪的点是,未声明的变量使用typeof 会返回undefined。
var message;
var nullVar = null;
alert(typeof message);//undefined
alert(typeof num);//undefined
alert(typeof nummNull);//Object
Null
应该也注意到null类型会返回Object类型,这是一种复杂数据类型。如果定义的变量在将来用于保存对象,那么最好初始化为null。这样只要检查是否为null就知道变量是否已经保存了一个对象的引用。
注意,undefined派生自null。因此会有下面的结果
alert(null==undefined);//true
Number
var octalNum1 = 070; //八进制
var octalNum2 = 079; //无效的八进制,解析为79
var hexNum1 = 0xA; //十六进制
数制转换
Number()、parseInt()、parseFloat()可以把变量转换为数字,规则如下:
参数 | 结果 |
---|---|
Boolean | true->1 false->0 |
数字 | 简单 |
null | 0 |
undefined | NaN |
字符串 | 如果只含数字,按十进制转换,如果满足十六进制规则转换为十六进制,如果是空字符串,变为0,如果都不满足,变为NaN |
对象 | 先调用valueOf()方法,将返回值进行转换。如果转换结果为NaN,调用toString()再判断 |
一般我们用parseInt()或者parseFloat()而不用Number(),因为Number()转换不甚合理。parseInt()好在:
- 可以识别八进制十进制
- 可以忽略掉数字后面的字符串,比如parseInt(100px)返回100
不过ECMAScript不同版本中对于第一点有一些不同。因此,parseInt还有第二个参数作为转换的基数。