ECMAScript中有五种简单数据类型(基本数据类型):Undefined、Null、Boolean、Number和String。还有一种复杂数据类型:Object。因为ECMAScript数据类型具有动态性,所以这六种数据类型足够表示所有数据。
1、typeof操作符
ECMAScript是松散类型,可以用typeof来检测给定变量的数据类型。typeof操作符返回字符串。
"undefined"--表示这个值未定义。
"string"--表示这个值是布尔值。
"number"--表示这个值是数值。
"boolean"--表示这个值是布尔值。
"object"--表示这个值是对象或者null。
"function"--表示这个值是函数。
2、Udefined 类型
Undefined类型只有一个值,即为undefined。
在使用var声明变量但未其加以初始化时,这个变量的值就是undefined。
对于未声明的变量执行typeof操作符同样会返回undefined。
var message;//该变量声明之后默认取得了undefined值。
alert(age);
alert(message);//undefined
alert(age);//undefined
3、Null类型
Null类型只有一个值,即为null。
从逻辑角度来看,null值表示一个空对象指针,因此typeof检测null值会返回"object"的原因。
注意:
alert(null==undefined);//true
alert(null===undefined);//false
4、Boolean类型
Boolean类型只有两个值,即为true和false。
数据类型与Boolean之间的转换:
数据类型 | 转换为true的值 | 转换为false的值 |
Boolean | true | false |
String | 任何非空字符串 | ""(空字符串) |
Number | 任何非零数值(包括无穷大) | 0和NaN |
Object | 任何对象 | null |
Undefined | undefined |
5、Number类型
Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)和一个特殊值NaN(not a number)。
alert(NaN==NaN);//false
isNaN() 函数用于检查其参数是否是非数字值。
有三个函数可以把非数值转换为数值:Number()、parseInt()、parseFloat()。第一个函数可以用于任何数据类型,而另两个专门用于字符串转换成数值。
Number()转换规则:
A.如果是Boolean值,true和false分别转换为1和0。
B.如果是数字值,只是简单的传入和返回。
C.如果是null值,返回0。
D. 如果是字符串,遵循以下规则:
a.如果只包含数字,将其转换为十进制数值,即"1"转换为1,"011"转换为11(前导零被忽视)。
b.如果字符串中包含有效的浮点格式,将其转换为对应的浮点数值(前导零被忽视)。
c.如果字符串中包含有效的十六进制格式,例如"0xf",将其转换为对应的十进制数值。
d.如果字符串是空的,将其转换为0。
e.如果包含上述格式之外的字符,将其转换为NaN。
E.如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回值。如果转换的结果是NaN,则调用对象的toString()方法,然后依照前面的规则转换返回的字符串值。
6、String类型
String类型用于表示由零个或多个16为Unicode字符组成的字符序列,即字符串。
ECMAScript中的字符串是不可变的,字符串一旦创建,它们的值就不能改变。
要把一个值转换为一个字符串有两种方法:toString()和String()。
String():适用于任何数据类型(null,undefined 转换后为null和undefined)。
toString():null,defined没有toString()方法。
7、Object类型
ECMAScript中的对象其实就是一组数据和功能的集合。对象可以执行new操作符后跟要创建的对象类型的名称来创建。
本人正在学习和摸索中,如有错误,欢迎指正!