浅谈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 相关文章推荐
EXT窗口Window及对话框MessageBox
Jan 27 Javascript
js算法中的排序、数组去重详细概述
Oct 14 Javascript
原生js配合cookie制作保存路径的拖拽
Dec 29 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
May 21 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
Aug 15 Javascript
Vue.js基础知识小结
Jan 13 Javascript
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
vue-lazyload使用总结(推荐)
Nov 01 Javascript
JavaScript中引用vs复制示例详析
Dec 06 Javascript
ant design实现圈选功能
Dec 17 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
Mar 17 Javascript
vue实现列表垂直无缝滚动
Apr 08 Vue.js
微信小程序开发探究
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
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
tab栏切换原理
2017/03/22 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
JavaScript实现tab栏切换效果
2020/03/16 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
[01:54]TI珍贵瞬间系列(三):翻盘
2020/08/28 DOTA
python django集成cas验证系统
2014/07/14 Python
Python装饰器decorator用法实例
2014/11/10 Python
Python实现的弹球小游戏示例
2017/08/01 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
python实现单向链表详解
2018/02/08 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
python实现简单图片物体标注工具
2019/03/18 Python
python wxpython 实现界面跳转功能
2019/12/17 Python
python kafka 多线程消费者&手动提交实例
2019/12/21 Python
Python如何安装第三方模块
2020/05/28 Python
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
参观监狱心得体会
2014/01/02 职场文书
爱情检讨书大全
2014/01/21 职场文书
应聘英语教师求职信
2014/04/24 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
2014年司法所工作总结
2014/11/22 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
七年级作文之英语老师
2019/10/28 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang