JavaScript 数据类型转换

来源:互联网 发布:支付宝接口 返回数据 编辑:程序博客网 时间:2024/05/04 17:43

  JavaScript是一种无类型语言,但同时JavaScript提供了一种灵活的自动类型转换的处理方式。基本规则是,如果某个类型的值用于需要其他类型的值的环境中,JavaScript就自动将这个值转换成所需要的类型。

  以下列出JavaScript一种特定类型用于一种特定环境下时所执行的转换。
     值       字符串       数字        布尔值       对象
   未定义的值   "undefined"     NaN         false          Error
     null       "null"        0           false                            Error
   非空字符串    As is                     字符串的数                   true                           String对象
                                                                     字值或NaN 
    空字符串               As is                            0                              false                         String对象
     0                          "0"                          As is                          false                         Number对象
    NaN                    "NaN"                        As is                          false                         Number对象
     无穷大                  "Infinity"                     As is                           true                           Number对象
   负无穷大               "-Infinity"                   As is                            true                          Number对象
    其他所有数字       数字的字符串值          As is                           true                          Number对象
         true                    "true"                            1                              As is                        Boolean对象
        false                   "false"                          0                              As is                        Boolean对象
         对象                 toString()                valueOf()或                   true                          As is
                                                                         toString()或  
                                                                            NaN 

  需要注意,对象在处于布尔环境中,就会被转换成true。把对象转换成数字是通过首先调用该对象的valueOf()方法,大多数对象继承了Object对象的默认valueOf()方法,它只是返回对象自身,由于默认的valueOf()方法不返回原始值,所以接下来JavaScript通过调用对象的toString()方法,再将生产的字符串转换成数字来吧对象转换成数字。
  具体说明参见《JavaScript权威指南》第204页。

  除了自动转换,JavaScript还提供了一种显式地将值从一种类型转换为另一种类型的转换工具。如Number()、Boolean()、String()和Obejct()都可以作为函数调用,它们可以将参数转换成合适的类型。

  下面介绍一些显式转换的技巧:
  要把一个值转换成字符串,可以把它连接到一个空串上
     var x_as_string = x+" ";
  要把一个值强制转换成数字,就用它减0
     var x_as_number = x - 0 ;
  要把一个值强制转换成布尔值,需要连用两次"!"运算符
     var x_as_boolean = !!x;

  从数字到字符串的转换在JavaScript中是最常执行的。我们可以通过以下方法显式的实现:
     var str = String(number);
     var str = number + "";
     var string = number.toString();   //number被转换成Number对象,再调用Number.toString()方法

  Number.toString()方法可以指定基数(2和36之间),如果没有指定,默认基数为10。
  在ECMAScript v3和JavaScript 1.5中,添加了三种将数字转换成字符串的方法,用于显示具有传统格式的数字(如表示货币的数字)。方法toFixed()将把数字转换成字符串,并显示小数点后指定的位数。方法toExponential()用指数计数法把数字转换成字符串,该字符串中的小数点前有一位数字,小数点后指定位数的数字。方法toPrecision()用指定位数的有效数字显示数字,如果有效数字的位数不足以显示数字的整数部分,它将采用指数计数法显示数字。这三种方法都回对结果字符串的数字进行适当舍入。
     var n = 123456.789;
     n.toFixed(0);      //"123457"
     n.toFixed(2);      //"123456.79"
     n.toExponential(1);  //"1.2e+5"
     n.toExponential(3);  //"1.235e+5"
     n.toPrecision(4);   //"1.235e+5"
     n.toPrecision(7);   //"123456.8"

  表示数字的字符串在数字环境中会自动转换成真正的数字。我们也可以显式地进行这一转换。
     var num = Number(str);
     var num = str - 0;
  这种字符串到数字的转换方式,只能用于基数为10的数字,而且虽然它允许数字前后有空格,但是却不允许字符串中的数字之后出现任何非空格字符。为此JavaScript提供了更灵活的进行转换的函数parseInt()和parseFloat()这两个函数将转换并返回一个字符串开头的所有数字,并忽略其后所有非数字后缀。对于以0x和0X开头的字符串,       parseInt()将它解释为十六进制数。
     parseInt("3 abc");                  //3
     parseFloat("3.15 abc");       //3.15
     parseInt("12.34");                 //12
     parseInt("0xFF");                  //255
  parseInt()还可以具有第二个参数,制定要被解析的数的基数。其合法值在2到36之间。
  如果parseInt()和parseFloat()不能将指定的字符串转换成数字,将返回NaN:
     parseInt("eleven");     //NaN
     parseFloat("s12.35");   //NaN

原创粉丝点击