ECMAScript中有5种简单数据类型(基本数据类型):Undefined、Null、Boolean、Number和String,还有一种复杂数据类型——Object,Object本质上是由一组无序的名值对组成的。
1. typeof操作符
对一个值使用typeof操作符可能返回下列某个字符串:
- "undefined"——如果这个值未定义
- "boolean"——如果这个值是布尔值
- "string"——如果这个值是字符串
- "number"——如果这个值是数值
- "object"——如果这个值是对象或null
- "function"——如果这个值是函数
2. undefined值是派生自null值的,因此 null==undefined 为true
3. Number类型
var intNum=55; //十进制
var octalNum1=070; //八进制的56
var octalNum2=079; //无效的八进制数值,解析为79
var octalNum2=08; //无效的八进制数值,解析为8
var hexNum1=0xA; //十六进制的10
var hexNum2=0x1f; //十六进制的31
- NaN
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(例如,除以0会返回NaN)。
NaN本身有两个特点:首先,任何设计NaN的操作都会返回NaN;其次,NaN与任何值都不想等,包括NaN本身(例如 NaN==NaN 返回false)。
针对这两个特点,ECMAScript定义了isNaN( )函数(例如:isNaN(NaN)返回true)。
- 数值转换
有3个函数可以把非数值转换为数值:Number( )、parseInt( )和parseFloat( )。Number( )可以用于任何数据类型,另外两个函数则专门用于字符串转换数值。
Number( )函数的转换规则如下:
-
- 如果是Boolean值,true和false将分别转换为1和0。
- 如果是null值,返回0。
- 如果是undefined,返回NaN。
- 如果是字符串:
-
- 如果只包含数字,则转换为十进制数值。
- 如果包含有效的浮点格式,则转换为浮点数值。
- 如果包含有效的十六进制,例如“0xf”,则转换为相同大小的十进制整数值。
- 如果字符串是空的,则转换为0。
- 如果字符串包含除上述之外的字符,则转换为NaN。
- 如果是对象,则调用对象的valueOf( )方法,然后依照前面的规则转换。如果转换结果是NaN,则调用对象的toString( )方法,然后依照前面的规则转换。
parseInt( )函数转换规则:(会忽略字符串前面的空格,直至找到第一个非空格字符
-
- 如果第一个字符不是数字字符或者负号,返回NaN。
- 如果第一个字符是数字字符,会继续解析接下来的字符,直至解析完所有字符或者遇到了一个非数字字符。(例如,“1234blue”返回1234)
- 如果字符串以“0x”开头且后跟数字字符,就会当做十六进制转换为十进制;如果以“0”开头,会当做八进制转换为十进制。(注:parseInt("****",16),第二个参数指定按十六进制解析,依次类推)
parseFloat( )与parseInt( )类似,也是从第一个字符开始解析,若遇到无效的浮点数字字符则停止,忽略后面的字符串(例如:“22.34.5”返回22.34)。第二个区别在于它始终会忽略前导的零。如果可解析为整数,则返回整数。
4. String类型
在调用数值的toString( )方法时,可传递一个参数:输出数值的基数。
null和undefined没有toString( )方法。在不知道是null或undefined的情况下,可使用转型函数String( ):
var value1=10;
var value2=true;
var value3=null;
var value4;
alert(String(value1)); //"10"
alert(String(value2)); //"true"
alert(String(value3)); //"null"
alert(String(value4)); //"undefined"
5. Object类型
Object的每个实例都具有下列属性和方法:
- constructor:保存着用于创建当前对象的函数。
- hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在。
- isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型。
- propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句累美剧。
- toLocaleString( ):返回对象的字符串表示,该字符串与执行环境的地区对应。
- toString( ):返回对象的字符串表示。
- valueOf( ):返回对象的字符串、数值或布尔值表示;通常与toString( )方法相同。