ECMAScript数据类型:
5种基本数据类型:Nudefined、Null、Boolean、Number、String
1种复杂数据类型:Object(Object本质上是由一组无序的键值对组成。)
typeof操作符永来检测给定变量的数据类型:
如果这个值未定义 —— “undefined”
如果这个值是布尔值 —— “boolean”
如果这个值是字符串 —— “string”
如果这个值是数值 —— “number”
如果这个值是对象或null —— “object”
如果这个值是函数 ——“function”
示例:
var message = "some thing";
alert(typeof message); // "string"
alert(typeof (message)); // "string"
alert(typeof 95); //"number"
typeof是一个操作符而不是函数。
Undefined类型
Undefined类型只有一个值,即特殊的undefined。
var message;//未初始化
alert(message == undefined);//true
包含undefined值的变量与未定义类型的变量是不一样的,如
var message;//声明后默认值为undefined值
//var age; //未声明
alert(message); //"undefined"
alert(age);//出现异常
对未初始化的变量执行typeof操作符会返回undefined值,而对未声明的变量执行typeof操作符同样也会返回undefined值,
var message;//
//var age;
alert(typeof message);//undefined
alert(typeof age);//undefined
Null类型
NULL类型只有一个值,即null。
typeof操作符检测null值时会返回"object"。
var car = null;
alert(typeof car);//"object"
if(car != null)
{
//对car对象执行相应操作
}
undefined值时派生自null值的
alert(null == undefined);//true
Boolean类型
Boolean类型只有两个值:true和false(区分大小写)。
虽然Boolean类型的字面值只有两个,但ECMAScript中所有类型的值都是与这两个Boolean值等价的值。
var message = "some thing";
var msgToBool = Boolean(message);
各种数据类型对应的转换规则:
数据类型 | 转换为true的值 | 转换为false的值 |
Boolean | true | false |
String | 任何非空字符串 | ""(空字符串) |
Number | 任何非零数字值 | 0和NaN |
Object | 任何对象 | null |
Undefined | n/a(不适用) | undefined |
Number类型
在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换成十进制数值。
关于浮点值得计算:
var a = 0.1, b = 0.2;
if(a + b == 0.3){
//永远也不会执行
}
事实上a + b = 0.30000000000000004 。