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 相关文章推荐
基于jquery用于查询操作的实现代码
May 10 Javascript
EditPlus注册码生成器(js代码实现)
Mar 25 Javascript
使用js修改客户端注册表的方法
Aug 09 Javascript
Jquery遍历checkbox获取选中项value值的方法
Feb 13 Javascript
javascript检测是否联网的实现代码
Sep 28 Javascript
JavaScript实现的一个倒计时的类
Mar 12 Javascript
JavaScript中5种调用函数的方法
Mar 12 Javascript
JS实现颜色梯度与渐变效果完整实例
Dec 30 Javascript
AngularJS基于factory创建自定义服务的方法详解
May 25 Javascript
函数式编程入门实践(一)
Apr 20 Javascript
Vue中util的工具函数实例详解
Jul 08 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
Feb 12 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调用Twitter的RSS的实现代码
2010/03/10 PHP
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
jQuery通过Ajax返回JSON数据
2015/04/28 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
JS实现的tab切换并显示相应内容模块功能示例
2019/08/03 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
将Python代码打包为jar软件的简单方法
2015/08/04 Python
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
python 实现矩阵填充0的例子
2019/11/29 Python
Python如何在bool函数中取值
2020/09/21 Python
C++和python实现阿姆斯特朗数字查找实例代码
2020/12/07 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
评析教师个人的自我评价
2014/02/19 职场文书
中等生评语大全
2014/05/04 职场文书
通知的格式范文
2015/04/27 职场文书
同乡会致辞
2015/07/30 职场文书
小学体育教学随笔
2015/08/14 职场文书
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL