ECMAScript中有五种简单的数据类型:Undefined、Null、Boolean、Number、String,一种复杂的数据类型Object
1.Undefined
Undefined类型只有一个值,即特殊的 undefined。在使用var变量进行变量声明但未对其进行变量赋值,这个变量的值自动赋为undefined。
var msg;
alert(msg == undefined); //true
var msg = undefined;
alert(msg == undefined) //true
没有必要显示将变量赋值为undefined,引入undefined值的目的是区分空对象指针和未经初始化的变量
未经声明的变量和包含undefined值的变量不同,前者智能检测类型
var msg; //变量声明,取得undefined的值
var age //变量未声明
alert(msg); //"undefined"
alert(age); //报错
alert(typeof msg); //"undefined"
alert(typeof age); //"undefined"
2. Null类型
Null类型仍是只有一个值的数据类型,这个特殊的值时null。
var msg = null;
alert(typeof msg); //"object"
从逻辑角度来看,null值表示一个空对象指针,这是typeof 返回object的原因,所以如果定义的变量将来用于保存对象,那么建议在声明该变量时将其初始化为null,这样只药检查null值就可以知道相应的变量是否已经保存了一个对象的引用。
3.Boolean类型
该类型有两个值,true、false(区分大小写,true与True不一样,false与False不一样)。这两个值与数字值不一样,true不一定等于1,false不一定等于0。
虽然Boolean的自面子只有两个,但是在ECMAScript中可以将所有类型的值与这个Boolean的值进行转换。可以调用Boolean()函数。
var mgs = 'Hello world';
var msgToBoolean = Boolean(msg);
4. Number类型
Number类型在js中使用较多。常用的有十进制、八进制、二进制、十六进制的表示方式。
十进制直接定义var intNum 55;
八进制以0开头,以8为基数,数字序列为(0~7)。
var octalNum1 = 071; // 转为十进制为57
var octalNum2 = 079; //无效的八进制,解析为十进制 79;
十六进制以0x开头,以16位基数,数字序列为(0-9 A-F)。
var hexNum1 = 0xA; //解析为十进制为10
var hexNum2 = 0x1A; //解析为十进制为26
二进制以2位基数,数字序列为(0-1),因为计算机指令使用二进制,所以进行二进制运算快。
在进行算术计算时,所有的进制被转为十进制。
(1) js中数值分为四字节的整型数据和8字节的浮点型数据。由于浮点型数据需要的内存空间是整型的两倍,所以js中会在合适的情况下将浮点型的数据转换为整型数据。
- 浮点型即带一个小数点。
var floatNum1 = 1.1; //浮点型1.1
var floatNum2 = 1.0; //转为整型1
- 可以使用科学计数法表示很大或是很小的数。
var floatNum1 = 3.0e8; //表示300000000
var floatNum2 = 3.0e-7; //表示0.0000003
- 浮点数值的最高精度是17位小数。能够表示的整型数字看起来很大,但是其进行算术计算时其精度远远不如整数。
var a = 0.1+0.2;
alert(a == 0.3);
//false 因为0.1+0.2 不等于0.3,而是等于0.30000000000000004
- ECMAScript能够表示的最小数值保存在Number.MIN_VALUE中,多数情况下,值为5e-324,最大值保存在Number.MIN_VALUE中,值为1.7976931348623157e+308.超过最大值为Infinity,小于最小值为-Infinity。函数ifFinite()返回true当数值位于最小值和最大值之间。
5.String类型
用于表示零或多个16位Unicode字符组成的字符序列,即字符串。字符串需用引号引起来,在js中,单引号和双引号都可以表示字符串。
String类型中有一些特殊的字符字面量,也叫做转义序列,用于表示非打印字符或具有其他用途的字符,如下表所示。
字面量 | 含义 |
---|---|
\n | 换行 |
\t | 水平制表 |
\b | 退格 |
\r | 回车 |
\ | 斜杠 |
\ ’ | 单引号( ’ ) |
\ ‘’ | 双引号 |
- 字符串的特点是一旦创建值不可变
6.Object类型
JS中的对象就是一组数据和功能的集合。创建方式为var o = new Object()
;
对象一旦被创建,就可以向其添加属性和方法。Object的每个实例都有如下的属性和方法。
- constructor:保存用于创建当前对象的函数,例如Object();
- hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(不是在对象的原型中)是否存在。propertyName为字符串。
- isPrototype(object):用于检查传入的对象是否是当前对象的原型。
- propertyIsEnumerable(propertyName):用于检查给定的属性是佛能够是用哪个for-in语句。
- toLocalString():返回对象的字符串表示。
- toString():返回对象的字符串表示。
- valueOf():返回对象的字符串、数值或布尔值表示。