`

3、类型转换

阅读更多

转换成字符串  

toString()

ECMAScript 的 Boolean 值、数字和字符串的原始值都伪对象 这意味着它们实际上可以具有属性和方法 (请参考《JavaScript浮点数运算 —— 精度问题 》一节数字伪对象应用)。3 种主要的原始类型 Boolean 值、数字和字符串都有 toString() 方法。

var bool = true; 

var num = 1.1; 
var str = 'str'; 
alert(bool.toString());//true 
alert(num.toString());//1.1 
alert(str.toString());//str 

 
采用 Number 类型的 toString() 方法的基模式,可以用不同的基输出数字,例如二进制的基是 2,八进制的基是 8,十六进制的基是 16。

var iNum1 = 10;
alert(iNum1.toString(2)); //输出 "1010"
alert(iNum1.toString(8)); //输出 "12"
alert(iNum1.toString(16)); //输出 "A"

var iNum2 = 0x123;//十六进制
alert(iNum2.toString(16)); //输出 "123" 

 

注:Number 类型的不带基于参数的toString() 方法返回的都是数字的十进制表示。因此,无基数时以八进制或十六进制字面量形式声明的数字输出的都是十进制形式的。

转换成数字

parseInt()

var iNum1 = parseInt("12345red"); //返回 12345 
var iNum2 = parseInt("0xA");        //十六进制数,返回 10 
var iNum3 = parseInt("010");        //八进制数,返回 8 
var iNum4 = parseInt("56.9");      //返回 56 
var iNum5 = parseInt("red");      //返回 NaN 
var iNum6 = parseInt("r123ed");  //返回 NaN,只要是以非数字开头,都会返回NaN 

 


带基数参数:

var iNum1 = parseInt("AF", 16); //返回 175,如果不带基数,则返回NaN,所以当没有正确前导时要指定基数 
alert(parseInt("0x10", 16)); //返回 16
alert(parseInt("10", 16)); //返回 16
alert(parseInt("0x10")); //返回 16,如果前导符正确时,可以不带基数也可以正确转换

 
当然,对二进制、八进制甚至十进制(默认模式),都可以这样调用 parseInt() 方法:

var iNum1 = parseInt("10", 2); //返回 2 
var iNum2 = parseInt("10", 8); //返回 8 
var iNum3 = parseInt("10", 10); //返回 10 

 
如果十进制数包含前导 0,那么最好采用基数 10,这样才不会意外地得到八进制的值。例如:

var iNum1 = parseInt("010");               //返回 8,以零开头时表示二进制,即使没有指定基数 
var iNum2 = parseInt("010", 8);            //返回 8 
var iNum3 = parseInt("010", 10);          //返回 10,以零开头 时,如果字符串本身是十进制时,就要带上基数 

 
在这段代码中,两行代码都把字符 "010" 解析成一个数字。第一行代码把这个字符串看作八进制的值,解析它的方式与第二行代码(声明基数为 8)相同。最后一行代码声明基数为 10,所以 iNum3 最后等于 10。

parseFloat()

parseFloat() 方法的另一不同之处在于,字符串必须以十进制形式表示浮点数 ,而不是用八进制或十六进制 该方法会忽略前导 0,所以八进制数 0102 将被解析为 102对于十六进制数 0xA,该方法将返回 NaN,因为在浮点数中,x 不是有效字符 。此外,parseFloat() 方法也没有基模式

var fNum1 = parseFloat("12345red"); //返回 12345 
var fNum2 = parseFloat("0xA"); //返回 NaN,不会看成十六进制,会所零先丢弃,但X却无法转换,所以为NaN 
var fNum3 = parseFloat("11.2"); //返回 11.2 
var fNum4 = parseFloat("11.22.33"); //返回 11.22 
var fNum5 = parseFloat("0102"); //返回 102,这里不会把它看成八进制,转换前会自动去掉 
var fNum1 = parseFloat("red"); //返回 NaN 

 

强制类型转换

ECMAScript 中可用的 3 种强制类型转换如下:

Boolean(value) - 把给定的值转换成 Boolean 型;

• Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
• String(value) - 把给定 的值转换成字符串;

Boolean()

当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回 true。如果该值是空字符串
、数字 0、undefined 或 null,它将返回 false。

Number()

Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值 ,而 不是部分值 如果字符串值能被完整地转换,Number() 将判断是调用 parseInt() 方法还是 parseFloat() 方法

Number(false)  //0 
Number("")    //0 
Number(true)  //1 
Number(null)   //0 
Number("1.2")   //1.2 
Number("12")    //12 
Number("1.2.3")  //NaN 
Number(new Object())//NaN 
Number(undefined)    //NaN 

String()

可把任何值转换成字符串。强制转换成字符串和调用 toString() 方法的唯一不同之处在于,对 null 和 undefined 值强制类型转换可以生成字符串而不引发错误

var s1 = String(null); //"null" 
var oNull = null; 
var s2 = oNull.toString(); //会引发错误 

 

分享到:
评论

相关推荐

    ActionScript 3 类型转换

    在深入探讨ActionScript 3类型转换的精妙之前,我们先来回顾一下ActionScript脚本语言,这是一种广泛应用于Adobe Flash平台的编程语言,主要用于创建动态交互式内容、游戏以及动画等。随着版本的演进,ActionScript...

    强制类型转换说明_LabVIEW中关于强制类型转换的使用_labview中tcp_

    在LabVIEW编程环境中,强制类型转换是至关重要的一个环节,特别是在涉及到数据通信,如TCP/IP通信时。本文将深入探讨LabVIEW中强制类型转换的概念、使用场景以及具体操作方法。 LabVIEW是一种图形化编程语言,它的...

    常用类型转换扩展_C#_扩展_类型转换_

    3. **类型转换方法(Type Conversion Methods)**:如`ToString()`,`Parse()`,`TryParse()`,`Convert.ToInt32()`等,用于字符串和其他类型之间的转换。 扩展方法是C#的一个特性,允许我们向已存在的类型添加新...

    C++类各种类型转换_数据类型的相互转换_

    首先,我们讨论隐式类型转换(也称为自动类型转换)。在C++中,当一个数据类型可以安全地被转换为另一种类型时,编译器会自动执行这种转换。例如,较小的数据类型(如int)可以被赋值给较大的数据类型(如long long...

    运行时类型信息RTTI及类型转换

    3. `reinterpret_cast`:提供最底层的转换,通常用于将指针或引用从一种类型转换为另一种完全不相关的类型,这可能导致不可预见的行为,除非非常了解底层内存布局。 在设计和编写多态的C++程序时,理解和利用RTTI...

    struts2学习笔记3数据类型转换

    struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换

    各种string类型转换

    在IT领域,字符串类型转换是编程中非常基础且重要的部分,尤其在处理不同编码、数据类型转换时,掌握各种string类型的转换方法对于提高程序的健壮性和灵活性至关重要。以下将详细解析从给定文件中提取出的关于“各种...

    C语言隐式类型转换规则

    3. **赋值过程中的类型转换**:在赋值操作中,右侧的表达式结果会被转换为左侧变量的类型。 - 比如,`float f = 10` 中,整数 `10` 会被转换为 `float` 类型。 4. **函数参数的类型转换**:在调用函数时,实际参数...

    mysql数据类型转换

    ### MySQL 数据类型转换详解 #### 一、引言 在MySQL数据库中,数据类型转换是一项非常重要的技能。它可以帮助我们灵活地处理不同类型的数据,尤其是在进行数据检索或处理时,经常需要将一种数据类型转换为另一种...

    VC各种类型转换,很详细啊

    在VC++编程环境中,类型转换是一项非常常见的操作,特别是在处理不同数据类型之间的交互时。VC++,即Visual C++,是Microsoft开发的一款强大的C++集成开发环境,它支持多种类型的类型转换,包括隐式转换和显式转换。...

    ORACLE 自动类型转换

    本文将深入探讨“ORACLE 自动类型转换”这一主题,以帮助理解Oracle如何处理不同类型的数据以及可能遇到的问题。 Oracle数据库支持多种数据类型,如数值型(NUMBER、INTEGER、BINARY_INTEGER等)、字符型(VARCHAR2...

    数据库中clob类型转换的问题 数据库中clob类型转换的问题

    在探讨“数据库中CLOB类型转换的问题”这一主题时,我们首先需要理解CLOB(Character Large Object)数据类型的基本概念及其在数据库中的应用场景。随后,将深入分析CLOB类型转换过程中可能遇到的问题,并提供相应的...

    C语言类型转换-自动类型转换、强制类型转换、指针类型转换

    3. **避免隐式转换导致的错误**:当类型转换可能引起意料之外的行为时,如可能导致精度损失或溢出,可以使用强制转换明确指定预期行为。 ### 指针类型转换 (Pointer Type Conversion) 在C语言中,指针类型转换允许...

    显式类型转换,类型强制转换为浮点型和整型

    在提供的`li2-3.cpp`文件中,可能包含了一个示例,演示了如何在实际代码中执行上述的类型转换操作。通过阅读和理解这个文件,你可以更直观地学习这些转换的实际应用。 总之,显式类型转换是编程中不可或缺的一部分...

    C ++类型转换心得

    3. 泛型编程:尽可能利用模板和泛型编程,减少显式类型转换,提高代码的可读性和复用性。 4. 避免丢失精度:当从浮点类型转换为整数类型时,可能会丢失小数部分,需要注意潜在的数据损失。 总之,理解C++中的类型...

    java数据类型的转换简单数据类型之间的转换 (2). 字符串与其它数据类型的转换 (3). 其它实用数据类型转换

    一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问下面笔者就开发中的一些体会介绍给大家。 我们知道,...

    数据库技术sql数据类型转换

    3. **数字类型转换**: - `int` 到 `char`: ```sql SELECT CONVERT(char(20), ytd_sales) FROM titles WHERE type = 'trad_cook'; ``` - `float` 到 `money`: ```sql SELECT CAST(10.3496 AS money); ``...

    java 强制类型转换示例

    在Java编程语言中,强制类型转换是将一个数据类型转换为另一个兼容的数据类型的过程。这通常发生在处理不同类型的变量或对象之间需要交互的情况。在Java中,有两种类型的转换:自动类型转换(隐式转换)和强制类型...

    C++四种类型转换

    3. **`reinterpret_cast`**:用于底层的类型转换,例如将一个指针转换为整数或者进行其他类型间的直接转换。这种转换可能会导致实现依赖的结果,并且通常只应在底层代码中使用。它是最具风险的一种转换类型,因为它...

    Mysql中类型转换

    ### MySQL中的类型转换 在MySQL中,类型转换是一项非常实用的功能,它可以帮助我们处理不同数据类型之间的转换,尤其是在处理如日期、数字与字符串等类型的相互转换时尤其有用。本文将详细介绍MySQL中常用的类型...

Global site tag (gtag.js) - Google Analytics