JavaScript 严格意义上分为 ECMAScript、DOM、BOM。ECMAScript 是一门真正意义上的语言,独立于浏览器,浏览器只是它的一个宿主环境。DOM(文档对象模型),为 ECMAScript 操作浏览器网页内容提供接口。BOM(浏览器对象模型),用来控制浏览器(宽度、高度、新窗口打开网页……),提供与浏览器交互的接口。以上三种结合起来,才是真正的 JavaScript。
ECMAScript 的变量类型是松散的,即为弱类型,用 var 声明一个变量以后就可以保存任何类型的数据。如果你是从 Java、C、C++ 甚至 C# 等强类型的语言转过来学 JavaScript 的话,可能会有些不适应。表面上看脱离的数据类型的束缚可能会很轻松愉快自由,但是实际上这种弱类型的语言,要注意的地方会更多,让我觉得条条框框比强类型语言还多。
ECMAScript 中有 5 中简单数据类型(基本数据类型),分别是:Undefined、Null、Number、String、Boolean,还有一种复杂类型数据:Object。
Undefined:Undefined 类只有一个特殊的值,即为 undef。使用 var 声明了变量但是还未赋值的变量,默认值就是 undefined。
Null:Null 类也只有一个特殊的值,即为 null。null 表示空对象指针,实际上 undefined 是派生自 null 的。所以在判断两者是否相等时,返回值为 true。
- 1 alert(null == undefined); //true
Boolean:Boolean 类有两个值,即为 true 和 false。即为可以使用 Boolean() 函数强制转换其他类型的数据到 bool 值。对应关系如下:
数据类型 | 转换为 true 的值 | 转换为 false 的值 |
Boolean | true | false |
String | 任何非空字符 | ""(空字符串) |
Number | 任何非零数字值(包括无穷大) | 0 和 NaN |
Object | 任何对象 | null |
Undefined | n/a(不适用) | undefined |
Number:ECMAScript 中最引人关注的数据类型。实际上 Number 类型包括浮点类型和整数类型。
整数类型除了可以表示十进制整数以外,还可以表示八进制以及十六进制。如果要保存八进制数,数字开头必须是 0,然后是八进制数,如果数中有某一位或多位大于 7
,则会被当做十进制解析,前导零将会被忽略。十六进制开头必须是 0x,后面的 a~f 可以大写也可以小写。
- 1
- var intNum = 55; //整数
- 2 3 4
- var octalNum1 = 070; //八进制的56
- 5
- var octalNum2 = 079; //无效的八进制数,被当做十进制数解析,79
- 6
- var octalNum3 = 08; //无效的八进制数,被当做十进制数解析,8
- 7 8
- var hexNum1 = 0xA; //十六进制的10
- 9
- var hexNum2 = 0x1f; //十六进制的31
浮点数值也就是数值中包含一个小数点,并且小数点后面至少有一位数字的数。如果小数点后面没有任何数字,则会被当做整数存储。
- 1
- var floatNum1 = 1.; //解析为1
- 2
- var floatNum2 = 10.0 //解析为10
对于极大或极小的浮点数可以用科学计数法表示。浮点数的最高精度是 17 位小数,但是在计算时精度却远不如整数,小小的舍入误差会导致无法测试特定浮点数的值。比如 0.1+0.2 的值不是 0.3,而是 0.30000000000000004. 因此,永远不要试图测定某个浮点数的值。
NaN:即为非数值(Not a number)。任何涉及 NaN 的操作都会返回 NaN。NaN 与任何值都不相等,包括 NaN 本身。
- alert(NaN == NaN); //false
来源: http://www.cnblogs.com/DM428/p/6759856.html