博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据类型转换
阅读量:6140 次
发布时间:2019-06-21

本文共 3552 字,大约阅读时间需要 11 分钟。

一、转换成字符串

1、伪对象:

ECMAScript定义所有的对象都有toString()方法,无论是真对象,还是伪对象。

ECMAScript中的Boolean值、数字和字符串都是伪对象,这意味着它们具有属性和方法。这三种伪对象都有toString()方法,可以把它们的值转换成字符串。

2、Boolean类型的toString()方法只能输出字符串"true"或"false"。

var bIsTrue = flase;alert(bIsTrue.toString());  // 输出字符串"false"

3、Number类型的toString()方法有两种模式

  3.1 默认模式

  整型数值会被解析为对应的字符串  

var iNum = 10; alert(iNum.toString()); // 输出十进制字符串"10"

  小数点后全为0的浮点数会被解析为整型字符串

var fNum = 10.00; alert(fNum.toString());    // 输出十进制字符串"10"

  小数点后非零的浮点数会被解析为对应的字符串

var fNum = 10.01; alert(fNum.toString());    // 输出十进制浮点格式字符串"10.01"

  八进制、十六进制整数会被解析为对应的十进制字符串

var iNum = 012;alert(iNum.toString());    // 输出十进制字符串"10"iNum = 0xAA;alert(iNum.toString());    // 输出十进制字符串"170"

  注:二进制整数不能使用toString()方法,因为二进制数有前导0时,会被认为是八进制数;无前导0时,会被认为是十进制数

 

  3.2 基模式

  可以用不同的基数(进制)输出字符串,基数是toString()方法的参数。

  二进制的基数是2,八进制的基数是8,16进制的基数是16,默认的基数是10。

var iNum = 10;alert(iNum.toString(2));    // 输出二进制字符串"1010"alert(iNum.toString(8));    // 输出八进制字符串"12"alert(iNum.toString(16))    // 输出十六进制字符串"a"

  注:十进制的基数是10,对数字调用toString(10)与toString()相同。

4、String类型的toString()方法

var sStr = "hello";alert(sStr.toString());    // 输出字符串"hello"

注:String类型直接使用即可,不必调用toString()方法。

 

二、转换成数字

ECMAScript规定只能将Number类型与String类型转换成数字(整型和浮点型),其他类型试图转换的结果都会为NaN(Not a Number)。

var bIsTrue = true;alert(parseInt(bIsTrue));    // 输出NaN

1、parseInt() 方法:

  1.1 默认模式

  parseInt()方法会从字符串的0位置处开始检查字符,如果0位置处不是数字,该方法将返回NaN;否则依次向后检查字符,直到遇到非数字字符,然后将该字符之前的字符串转换成数字返回。

var sStr = "12345Hello world";alert(parseInt(sStr));    // 输出数字:12345 sStr = "hello world"; alert(parseInt(sStr));  // 输出:NaN

  注:parseInt()方法因为只将参数转换为整数,所以参数中的小数点也被认为是非数字字符。

var iNum = 5.9;alert(parseInt(iNum));    // 输出整数:5var sStr = "5.9Hello";alert(parseInt(sStr));    // 输出整数:5

   当parseInt()方法的参数为八进制数字;十六进制字符串或数字时,会返回十进制结果:

var sStr = "0xAHello";alert(parseInt(sStr));        // 输出十进制整数:10var iNum = 012;alert(parseInt(iNum));      // 输出十进制整数:  10

  注:parseInt()方法在默认模式下,当参数为八进制字符串时,在Chrome、IE、FireFox中的执行结果不同;当参数为八进制整数时,执行结果相同。

/*    IE9 Chrome 23中输出十进制整数:10    FireFox中输出十进制整数:8*/var sStr = "010";alert(parseInt(sStr));/*    IE9、Chrome 23、 FireFox中都输出十进制整数:10 */var iNum = 010;alert(parseInt(iNum));/*    建议的写法是为parseInt()方法指定基数,三种浏览器中都统一输出十进制数:8*/var sStr = "010";alert(parseInt(sStr, 8));

  1.2 基模式(推荐使用)

 

  parseInt()方法的基模式,可以把二进制、八进制、十六进制甚至其他任何进制的字符串及数字转换成十进制整数。

  parseInt()方法的第一个参数是待转换的字符串或数字;第二个参数是基数。

var iNum = 0xA;alert(parseInt(iNum, 16));    // 将十六进制整数输出为十进制整数:10var sStr = "0xAHello";alert(parseInt(sStr, 16));    // 将包含十六进制数的字符串输出为十进制整数:10

  注:建议parseInt()方法中显式使用基数。

 

2、parseFloat()方法:

parseFloat()方法与parseInt()方法的处理方式相似,但是parseFloat()方法没有基模式。

  2.1 当在位置0处检索到无效字符时,将返回NaN。

  2.2 当从位置0处依次检索到有效数字,且在这些数字后遇到的第一个小数点是有效字符,再往后依次检索到无效字符(包含第二个小数点),将返回该无效字符之前的浮点数。

  2.3 检索到的浮点数,若小数点后无有效数字或全为0,则返回整数。

  2.4 类似".01A.BC"这样的字符串将被返回0.01,即返回时会自动加前导0。

  2.5 返回的浮点数,小数点后的前导0多于5个时,会以科学计数法的方式返回结果。

  2.6 parseFloat()方法不支持八进制与十六进制的字符串,但是支持八进制与十六进制的整数。

var fNum1 = parseFloat(12.00);    // 返回:12var fNum2 = parseFloat("12.00")    // 返回:12var fNum3 = parseFloat(.01);    // 返回:0.01var fNum4 = parseFloat(.01Hello);    // 返回:0.01var fNum5 = parseFloat("hello");    // 返回:NaNvar fNum6 = parseFloat("12.10");    // 返回:12.1var fNum7 = parseFloat("12.12");    // 返回:12.12var fNum8 = parseFloat("0xA");    // 返回:0var fNum9 = parseFloat("010");    // 返回:10

 

三、强制类型转换

强制类型转换会在内存中新开辟一块空间,用于存放由原始值直接转换成的值。

ECMAScript支持以下三种强制类型转换:

1、Boolean(value)  ---  将value值的拷贝强制转换成Boolean类型。

2、Number(value)  ---  将value值的拷贝强制转换成Number类型。

3、String(value)    ---  将value值的拷贝强制转换成String类型。

转载于:https://www.cnblogs.com/redasurc/archive/2013/01/13/2858299.html

你可能感兴趣的文章
我的友情链接
查看>>
PCS子层有什么用?
查看>>
查看端口,关闭端口
查看>>
代码托管平台简介
查看>>
linux:yum和apt-get的区别
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Mindjet MindManager 2019使用教程:
查看>>
游戏设计的基本构成要素有哪些?
查看>>
详解 CSS 绝对定位
查看>>
AOP
查看>>
我的友情链接
查看>>
NGUI Label Color Code
查看>>
.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
查看>>
vue组件开发练习--焦点图切换
查看>>
浅谈OSI七层模型
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>