基本数据类型
- undefined:使用var声明了,但未对其加以初始化
var message;
console.log(message); //结果undefined
补充:若变量未声明,直接使用会报错。(书上这么说的,但实际上有出入)
var age; // name 未声明
console.log(age); //返回undefined
console.log(name); //书上说会报错,但我在火狐、谷歌浏览器上的结果是<empty string> ''
注意:若变量尚未声明,同初始化但未赋值一样,typeof返回的值也是undefined
var sex; //major未声明
console.log(typeof sex); //结果undefined
console.log(typeof major); //结果undefined
- null:定义了赋值了,只是值为null
意义:准备在将来用于保存对象。这样一来,只要直接检查null的值就可以知道相应的变量是都已经保存了一个对象的引用。
if(car != null){
//对car对象执行某些操作
}
- boolean:两个值:true 和 false
注意:虽然Boolean类型的字面值只有两个,但ECMAScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean()。下表给出各种数据类型以及对应的转换规则
数据类型 | 转换为true的值 | 转换为false的值 |
Boolean | true | false |
String | 任何非空字符串 | ""(空字符串) |
Number | 任何非零数字值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
Undefined | n/a | undefined |
- string
字符串字面量
字面量 | 含义 |
\n | 换行 |
\t | 制表 |
\b | 空格 |
\r | 回车 |
\f | 进纸 |
\\ | 斜杠 |
\' | 单引号 |
\" | 双引号 |
\xnn | 以十六进制代码nn表示的一个字符 |
\unnnn | 以十六进制代码nn表示的一个Unicode字符 |
字符串特点
ECMAScript中的字符时不可变的,也就是说,字符串一点创建,它们的值不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后用里一个包含新值的字符串填充该变量。
转换为字符串
方法一:obj.toString() ,对null和undefined 不适用
方法二(万能):String(obj)
方法三 : obj + "" (空字符)
obj为想要转换为字符串的对象
- number:使用IEEE754标准来表示整数和浮点数值。
整数
// 十进制
var intNum = 55;
// 八进制
var octaNum1 = 070 //八进制的56
var octaNum2 = 079 //无效的八进制数值--解析为79
/* 除了十进制表示外,整数还可以通过八进制或者十六进制的字面值来表示
* 其中,八进制字面值的第一位必须是0,然后是八进制数字序列(0~7)。如果字面中的数值超出了范围,那么前
* 导0将被省略,后面的数值将被当作十进制数值解析。
*/
八进制字面量在严格模式下是无效的,会导致支持的JavaScript引擎抛出错误。
浮点数值
浮点数的最高精度是17位小数,但在进行算术计算时器精确度远远不如整数。
所以永远不要测试某个特定的浮点数值
数值范围
最大数值保存在Number.MAX_VALUE中,1.7976931348623157e+308
最大数值保存在Number.MIN_VALUE中,5e-324
判断数值是否位于最小和最大的数值之间,使用isFinite()函数,返回值boolean
NaN:用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)
- 任何数值除以0返回NaN
- 任何设计NaN的操作都会返回NaN
- NaN == NaN //false
- isNaN()函数接受一个参数,判断这个参数是否“不是数值”,返回值boolean
数值转换
有三个函数可以把非数值转换为数值:Number() parseInt() parseFloat()
转换规则略