JS 类型转换常见方法小结


Posted in Javascript onMay 31, 2010

一、类型转换

1.转换成字串

ECMAScript的Boolean值、数字和字串的原始值的有趣之处在于它们是伪对象,这意味着它们实际上具有属性和方法。
如:

Js代码

var sColor = "blue"; 
alert(sColor.length);//outputs "4" 
var sColor = "blue"; 
alert(sColor.length);//outputs "4"

总而言之,3种主要的原始值Boolean值、数字和字串都有toString()方法。ECMAScript定义的所有对象都有toString()方法,无论它是伪对象,还是真的对象。

Boolean型的toString()方法只是输出"true"或"false",结果由变量的值决定:

Js代码

var bFound = false; 
alert(bFound.toString());//outputs "false" 
var bFound = false; 
alert(bFound.toString());//outputs "false"

Number类型的toString()方法比较特殊,它有两种模式,即默认模式和基模式,采用默认模式,toString()方法只是用相应的字符串输出数字值(无论是整数、浮点数还是科学记数法)。
Js代码

var iNum1 = 10; 
var fNum2 = 10.0; 
alert(iNum1.toString()); //outputs "10" 
alert(fNum2.toString()); //outputs "10" 
var iNum1 = 10; 
var fNum2 = 10.0; 
alert(iNum1.toString()); //outputs "10" 
alert(fNum2.toString()); //outputs "10"

采用Number类型的toString()方法的基模式,可以用不同的基(进制基数)输出数字。
Js代码

var iNum = 10; 
alert(iNum.toString(2)); //outputs "1010" 
alert(iNum.toString(8)); //outputs "12" 
alert(iNum.toString(16)); //outputs "A" 
var iNum = 10; 
alert(iNum.toString(2)); //outputs "1010" 
alert(iNum.toString(8)); //outputs "12" 
alert(iNum.toString(16)); //outputs "A"

2.转换成数字

ECMAScript提供了两种把非数字的原始值转换成数字的方法,即parseInt()和parseFloat()。
注意:只有对String类型(Number除外)调用这些方法,才能正确运行对其他类型返回的都是NaN。

例如:
Js代码

var iNum1 = parseInt("1234blue");//returns 1234 
var iNum2 = parseInt("oxA"); //returns 10 
var iNum3 = parseInt("22.5"); //returns 22 
var iNum4 = parseInt("blue"); //returns NaN 
var iNum1 = parseInt("1234blue");//returns 1234 
var iNum2 = parseInt("oxA"); //returns 10 
var iNum3 = parseInt("22.5"); //returns 22 
var iNum4 = parseInt("blue"); //returns NaN

parseInt()方法还有基模式,可以把二进制、八进制、十六进制或者其他任何进制的字符串转换成十进制整数。第二个参数指定按哪一种进制来解析。
Js代码

var iNum1 = parseInt("AF",16);// returns 175 
var iNum2 = parseInt("10",2); // returns 2 
var iNum3 = parseInt("10",8); //returns 8 
var iNum4 = parseInt("10",10); //returns 10 
var iNum1 = parseInt("AF",16);// returns 175 
var iNum2 = parseInt("10",2); // returns 2 
var iNum3 = parseInt("10",8); //returns 8 
var iNum4 = parseInt("10",10); //returns 10

说明:如果十进制数包含前导0,那么最好采用基数10,否则得到的是八进制的值。
Js代码

var iNum1 = parseInt("010"); // returns 8 
var iNum2 = parseInt("010",8); //returns 8 
var iNum3 = parseInt("010",10);//returns 10 
var iNum1 = parseInt("010"); // returns 8 
var iNum2 = parseInt("010",8); //returns 8 
var iNum3 = parseInt("010",10);//returns 10

parseFloat()方法与parseInt()方法的处理方式相似,从位置0开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字符之前的字串转换成数字。对于这个方法来说,第一个出现的小数点是有效字符。如果用两个小数点,第二个小数点将被看作无效的。使用该方法的另一个不同之处在于,字串必须以十进制形式表示浮点数。

Js代码

var fNum1 = parseFloat("1234blue"); //returns 1234.0 
var fNum2 = parseFloat("0xA"); //returns NaN 
var fNum3 = parseFloat("22.5"); //returns 22.5 
var fNum4 = parseFloat("22.34.5");//returns 22.34 
var fNum5 = parseFloat("0908");//returns NaN 
var fNum6 = parseFloat("blue");//returns NaN 
var fNum1 = parseFloat("1234blue"); //returns 1234.0 
var fNum2 = parseFloat("0xA"); //returns NaN 
var fNum3 = parseFloat("22.5"); //returns 22.5 
var fNum4 = parseFloat("22.34.5");//returns 22.34 
var fNum5 = parseFloat("0908");//returns NaN 
var fNum6 = parseFloat("blue");//returns NaN

3.强制类型转换
ECMAScript中可用的3种强制类型转换如下:
(1).Boolean(value)
把给定的值转换成Boolean型。
当要转换的值是至少有一个字符的字符串、非0数字或对象时,Boolean()函数将返回true。如果该值是空字符串、数字0、undefined或null,它将返回false。
如:
Js代码

var b1 = Boolean(""); // false; 
var b2 = Boolean("hi");//true 
var b3 = Boolean(100);//true 
var b4 = Boolean(null);//false 
var b5 = Boolean(0);//false 
var b6 = Boolean(new Object());//true 
var b1 = Boolean(""); // false; 
var b2 = Boolean("hi");//true 
var b3 = Boolean(100);//true 
var b4 = Boolean(null);//false 
var b5 = Boolean(0);//false 
var b6 = Boolean(new Object());//true

(2).Number(value)
把给定的值转换成数字(可以是整数或浮点数)。
还记得parseInt()和parseFloat()方法只转换第一个无效字符之前的字符串,因此"4.5.6"将被转换为"4.5"。用 Number()进行强制类型转换,"4.5.6"将返回NaN,因为整个字符串值不能转换成数字。如果字符串能被完整地转换,Number()将判断是调用parseInt()方法还是调用parseFloat()方法。
如:
Js代码

Number(false);//0 
Number(true);//1 
Number(undefined);//NaN 
Number(null);//0 
Number("5.5");//5.5 
Number("56");//56 
Number("5.6.7");//NaN 
Number(new Object());//NaN 
Number(100);//100 
Number(false);//0 
Number(true);//1 
Number(undefined);//NaN 
Number(null);//0 
Number("5.5");//5.5 
Number("56");//56 
Number("5.6.7");//NaN 
Number(new Object());//NaN 
Number(100);//100

(3).String(value)
把给定的值转换成字串。
与调用toString()方法的唯一不同之处在于,对null或undefined值强制类型转换可以生成字符串而不引发错误:
Js代码

var s1 = String(null);//"null" 
var oNull = null; 
var s2 = oNull.toString();//causes an error
Javascript 相关文章推荐
Javascript条件判断使用小技巧总结
Sep 08 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
Aug 26 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
Dec 06 Javascript
AngularJS中$interval的用法详解
Feb 02 Javascript
jQuery插件uploadify实现ajax效果的图片上传
Jun 18 Javascript
JS简单实现点击复制链接的方法
Aug 03 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
Dec 08 Javascript
js仿微信语音播放实现思路
Dec 12 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
Feb 09 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
May 17 Javascript
JavaScript文本特效实例小结【3个示例】
Dec 22 Javascript
原生js实现轮播图特效
May 04 Javascript
javascript 传统事件模型构造的事件监听器实现代码
May 31 #Javascript
LazyLoad 延迟加载(按需加载)
May 31 #Javascript
基于jquery的气泡提示效果
May 31 #Javascript
niceTitle 基于jquery的超链接提示插件
May 31 #Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
May 31 #Javascript
jQuery 获取对象 定位子对象
May 31 #Javascript
jQuery 获取对象 基本选择与层级
May 31 #Javascript
You might like
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
php使用curl存储cookie的示例
2014/03/31 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
PHP代码加密的方法总结
2020/03/13 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
关于extjs4如何获取grid修改后的数据的问题
2013/08/07 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
js实现手机web图片左右滑动效果
2017/12/29 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
Python中functools模块的常用函数解析
2016/06/30 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
儿童编程python入门
2018/05/08 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
利用Python求阴影部分的面积实例代码
2018/12/05 Python
Python数学形态学实例分析
2019/09/06 Python
python numpy 反转 reverse示例
2019/12/04 Python
python-numpy-指数分布实例详解
2019/12/07 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
美味咖啡的顶级烘焙师:Cafe Britt
2018/03/15 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
初婚初育证明
2014/01/14 职场文书
粗加工管理制度
2014/02/04 职场文书
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
公司人事管理制度
2015/08/05 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书