JavaScript中有5种简单的数据类型(基本数据类型):Undefined、Null、Boolean、Number和String。还有一种复杂数据类型——Object,Object本质是由一组无序的明值对组成的。JavaScript不支持任何创建自定义类型的机制,而所有值最终都是上述6种之一(JavaScript数据类型具有动态性)。
检测给定变量的数据类型——typeof。使用方法:(typeof是一个操作符而不是函数,所以括号可以使用,但不必要)
var message=”abc”;
alert(typeof message);//"string"
alert(typeof (message));//"string"
alert(typeof 99);//"number"
“undefined”——这个值未定义;
“boolean”——布尔值;
“string”——字符串;
“number”——数值;
“object”——对象或null;(null被认为是一个空的对象引用)
“function”——函数。
(1)Undefined类型
使用var声明变量但未对其初始化:
var message;
alert(message);//"undefined"
但声明变量未对其初始化和未声明变量还是不同
var message;
//var message1;
alert(message);//"undefined"
alert(message1);//产生错误
//"Uncaught ReferenceError: message1is not defined"
但对于使用typeof检测其属性时,未声明的依旧会显示undefined;
var message;
//var message1;
alert(typeof message);//"undefined"
alert(typeof message1);//"undefined"
(2)Null类型
从逻辑上看,null值表示一个空对象指针,所以这就是使用typeof操作符检测null会返回“Object”的原因。
var car;
alert(typeof car);//"object"
对于定义变量未来准备用于保存为对象,最好将其初始化为null,以后只需检查null就可知道是否有相应的变量保存对象引用。
实际使用时,undefined值是派生自null值,所以存在两者相比返回true。
alert(null == undefined);//true
alert(null === undefined);//true
(3)Boolean类型
该类型只有两个字面值:true和false。所以,True和False都不是Boolean值,只是标识符。虽然只有两个值,但所有数据类型都可转换成Boolean类型,只需调用Boolean()转型函数。
var message="abc";
var message_type=Boolean(message);
alert(message_type);//true
下表给出各类数据类型转换规则:
数据类型 | 转换为true | 转换为false |
Boolean | true | false |
String | 任意字符串 | “”空字符串 |
Number | 任意非零数(包括无穷) | 0和NaN |
Object | 任何对象 | null |
Undefined | 无 | Undefined |
(4)Number类型
由于内存限制,数值所能表达的最小值存在Number.MIN_VALUE中,为5e-324;最大值Number.MAX_VALUE,为1.7976931348623157e+308。若超过最大值,自动转换为Indinity值。Infinity不能参加运算。
NaN,即非数值(Not a Number)是一个特殊的数值,用于表示本应返回数值的操作数未返回数值的情况(避免抛出错)。例如:0/0会返回NaN,但正数/0返回Infinity,负数返回-Indinity。
定义了几个函数isNaN()(返回Boolean类型,判断是否是数值,是返回false),Number()(数值转换),parseInt()(返整数),parseFloat()。
Number():true——1;1——1;null——0;undefined——NaN;字符串只包含数值直接转换(空为0,八进制直接忽略,十六进制转换十进制后显示);
parseInt():“123bad”——123;“”——NaN;“0xA”——10;10.5——10;“070”——56(版本不同会有歧义js3为56,js5为70).