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 相关文章推荐
8个超棒的学习 jQuery 的网站 推荐收藏
Apr 02 Javascript
文本域中换行符的替换示例
Mar 04 Javascript
jquery实现的淡入淡出下拉菜单效果
Aug 25 Javascript
JS与jQ读取xml文件的方法
Dec 08 Javascript
bootstrap table服务端实现分页效果
Aug 10 Javascript
Vue数组更新及过滤排序功能
Aug 10 Javascript
用p5.js制作烟花特效的示例代码
Mar 21 Javascript
jQuery中的$是什么意思及 $. 和 $().的区别
Apr 20 jQuery
Bootstrap table表格初始化表格数据的方法
Jul 25 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
Sep 13 Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 Javascript
用JS实现飞机大战小游戏
Jun 09 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脚本的10个技巧(1)
2006/10/09 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
PHP实现的购物车类实例
2015/06/17 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
详解JS模块导入导出
2017/12/20 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
利用JS代码自动删除稿件的普通弹幕功能
2019/09/20 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
python 调用HBase的简单实例
2016/12/18 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
Django model update的多种用法介绍
2020/03/28 Python
python类中super() 的使用解析
2019/12/19 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
如何获取某个日期是当月的最后一天
2013/12/05 面试题
计算机系毕业生推荐信
2013/11/06 职场文书
优秀员工表扬信
2014/01/17 职场文书
网络管理专业求职信
2014/03/15 职场文书
红色故事演讲稿
2014/05/22 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
2014年度思想工作总结
2014/11/27 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
如何理解PHP核心特性命名空间
2021/05/28 PHP
php实现自动生成验证码的实例讲解
2021/11/17 PHP
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技