你的位置:首页 > Java教程

[Java教程]《JavaScript高级编程》读书笔记——数据类型


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( )方法相同。