javascript不同类型数据之间的运算的转换方法


Posted in Javascript onFebruary 13, 2014

js中不同类型的基础数据之间可以转换,这种转换是有规则可寻的,并非随意的随机的。在js中有5种基础类型数据:string、number、boolean、null、undefined,其中,常用于计算或者比较的类型是前面三种。

基础数据之间的转换

其它类型转化数字
原始数据类型 目标类型Number
undefined NaN
null 0
false 0
true 1
数字串 相应的数字
不能转化的字符串 NaN
其它类型转化为字符串
原始数据类型 目标类型String
undefined undefined
null null
false false
true true
数字 数字字符串

 

不同类型的基础数据之间的加法,数据先转换为number,然后转换为string(如果有string类型数据参与运算)

null + undefined // 0+NaN null + false // 0+0 
1 + true // 1+1 
1 + '1' //'11';数字与字符串相加结果是字符串 
1 + 2 + '3'  //'33';(1+2)的结果然后与'3'相加;这里要把每一步加法单独拆开来看,否则变成和下面一样的结果了. 
1 + (2 +'3') //'123';先运算2+'3',然后1+'23' 
's' + null //'snull' 
's' + undefined // 'sundefined' 
's' + true //'strue' 
1 + true + undefined + 's' // 1+1+NaN+'s'=2+NaN+'s'=NaN+'s'=NaNs

对象参与加减法运算

对象参与基础类型数据运算,先转化为基础类型。先调用其valueOf方法,如果返回的不是基础类型,再调用其toString方法,如果返回的还不是基础类型,则抛出错误。但是,Date数据刚好相反

//为了便于观察重写Date的toString方法和valueOf方法 Date.prototype.toString = function(){ 
    return 1; 
} 
Date.prototype.valueOf = function(){ 
    return 2; 
} 
var a = new Date, 
    b = new Date; 
a + b; // 调用toString,1 + 1,结果是2 
// 再重写toString方法 
Date.prototype.toString = function(){ 
    return {}; 
} 
var c = new Date, 
    d = new Date; 
c + d; // 调用toString方法返回的不是基础类型,再调用valueOf,2 + 2,结果是4 
// 再重写valueOf方法 
Date.prototype.valueOf = function(){ 
    return {}; 
} 
var e = new Date, 
    f = new Date; 
e + f; // 报错

把上面的例子换成Object或者其他类型能得到相应的结果,不过是先调用valueOf,再调用toString。

'+'号的神奇功效

数据前有加号‘+',可以让字符串转化为数字

+'1'+1 // 2 +'s'+2 // NaN

注:第一次,格式不好,纰漏多,欢迎大家拍砖
Javascript 相关文章推荐
使用JavaScript实现网页版Pongo设计思路及源代码分享
Jun 16 Javascript
js实现左侧网页tab滑动门效果代码
Sep 06 Javascript
浅析Bootstrap缩略图组件与警示框组件
Apr 29 Javascript
JavaScript判断浏览器及其版本信息
Jan 20 Javascript
jQuery实现元素的插入
Feb 27 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
Jan 17 Javascript
React key值的作用和使用详解
Aug 23 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
Nov 17 Javascript
uni-app 支持多端第三方地图定位的方法
Jan 03 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
Apr 15 Javascript
vue-cli4使用全局less文件中的变量配置操作
Oct 21 Javascript
微信小程序picker组件两列关联使用方式
Oct 27 Javascript
js清理Word格式示例代码
Feb 13 #Javascript
Js与下拉列表处理问题解决
Feb 13 #Javascript
js加载读取内容及显示与隐藏div示例
Feb 13 #Javascript
input禁止键盘及中文输入,但可以点击
Feb 13 #Javascript
JS实现将人民币金额转换为大写的示例代码
Feb 13 #Javascript
jquery清空表单数据示例分享
Feb 13 #Javascript
jquery提交form表单时禁止重复提交的方法
Feb 13 #Javascript
You might like
浅析PHP中Collection 类的设计
2013/06/21 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
php中关于换行的实例写法
2019/09/26 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
javascript if条件判断方法小结
2014/05/17 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
JavaScript仿flash遮罩动画效果
2016/06/15 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
python实现备份目录的方法
2015/08/03 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
党校培训思想汇报
2013/12/30 职场文书
2014年教师节寄语
2014/04/03 职场文书
公司节能减排倡议书
2014/05/14 职场文书
留学生求职信
2014/06/03 职场文书
学生打架检讨书
2014/10/20 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
总经理聘用协议书
2015/09/21 职场文书
Python基础教程,Python入门教程(超详细)
2021/06/24 Python
python函数的两种嵌套方法使用
2022/04/02 Python