浅谈javascript中的数据类型转换


Posted in Javascript onDecember 27, 2016

1、把其他的数据类型转换为number类型

    Number()->严格

    parseFloat/parseInt ->非严格

    isNaN(value) 如果value值不是数字类型的,它是首先调用Number转换为数字类型然后在判断是否为有效的数字

    例如:

    Number("12px"); ->NaN

    parseInt("12px"); ->12

    isNaN("12"); ->false

    规律:

   1)把布尔类型转换为数字的话 true->1  false->0

    2)把null/undefined转换为数字 null->0  undefined->NaN  10+null=10   10+undefined=NaN

    3)把[]转换为数字 首先调用数组的toString方法把[]->"",然后在使用Number方法把""->0

2、把其他的数据类型转换为布尔类型

    Boolean

     !!

     ! 先转换为布尔类型,然后在取反

    例如:

    !!1->true

    !!0->false

     ![]->false  !![]->true

    规律:

    只有0、NaN、null、undefined、""这五个转换为布尔类型的时候是false,其余的转换完成都是true

    特殊情况:

    如果你的条件判断中只是单独的一个值,它是首先把1转换布尔类型(->true),在判断是真还是假,如果是真条件成立,反之条件不成立

if (1) { }
  if ("3px" * 3) {//->条件不成立 "3px" * 3=NaN ->false
  }
  if ("3px" + 3) {//->条件成立 "3px" + 3="3px3" ->true
  }

    "+"在JS中不仅仅是数学运算,遇到字符串的时候属于字符串拼接

    "-、*、/"在JS中只能是数学运算,遇到不是number类型的要强制转换为number进行数学性运算

3、两个值进行比较(==比较的,===比较数据类型不一样不会进行默认的转换),如果左右两边的数据类型不一样,我们需要遵循一套法则,进行默认的数据类型转换

    value1==value2

    1)对象==对象  比较的是自己存储的内存地址,如果内存地址不一样就不相等  []==[]->false 每一个空数组都是一个单独的内存地址

    2)对象==字符串 调用toString方法,将对象转换为字符串  []==""->true   

    3)对象==布尔  对象转换为数字(toString-Number),布尔也转换为数字(true->1 false->0)

    []==false ->true  []->0 false->0 0==0->true

    ![]==false -> ![]先把空数组转换为布尔类型然后在取反->false   false==false->true

    4)对象==数字 对象转换为数字  []==0->true  []==1->false

    5)字符串==布尔  两者都转换为数字   "3"==true->false  "1"==true->true

    6)字符串==数字  字符串转换为数字  ""==0->true 

    7)布尔==数字  布尔转换为数字  true==1->true  true==2->false

    8)null==undefined ->true   null===undefined ->false 

      null/undefined和其他的任何值都不相等  null==0->false  

    9)NaN==NaN ->false  NaN和任何的值(包括自己)都不相等

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
让IE8支持DOM 2(不用框架!)
Dec 31 Javascript
基于jquery的$.ajax async使用
Oct 19 Javascript
javascript中获取下个月一号,是星期几
Jun 01 Javascript
jQuery弹出层始终垂直居中相对于屏幕或当前窗口
Apr 01 Javascript
无限树Jquery插件zTree的常用功能特性总结
Sep 11 Javascript
jquery中ajax使用error调试错误的方法
Feb 08 Javascript
微信小程序的日期选择器的实例详解
Sep 29 Javascript
vue.js实现回到顶部动画效果
Jul 31 Javascript
js消除图片小游戏代码
Dec 11 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
Feb 14 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 Javascript
js实现自定义右键菜单
May 18 Javascript
微信小程序开发探究
Dec 27 #Javascript
javascript replace()第二个参数为函数时的参数用法
Dec 26 #Javascript
javascript prototype原型详解(比较基础)
Dec 26 #Javascript
如何提高数据访问速度
Dec 26 #Javascript
Angular的模块化(代码分享)
Dec 26 #Javascript
详解Angular的数据显示优化处理
Dec 26 #Javascript
easyui combotree加载静态数据问题(选不上)解决方法
Dec 26 #Javascript
You might like
php注销代码(session注销)
2012/05/31 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
php实现求相对时间函数
2015/06/15 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
纯javascript版日历控件
2016/11/24 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
通过实例解析js简易模块加载器
2019/06/17 Javascript
layui2.0使用table+laypage实现真分页
2019/07/27 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
梳理一下vue中的生命周期
2020/12/30 Vue.js
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
博士生导师推荐信
2014/07/08 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
信访维稳承诺书
2015/05/04 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
早上好问候语大全
2015/11/10 职场文书
Vue接口封装的完整步骤记录
2021/05/14 Vue.js