浅谈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 相关文章推荐
HTML-CSS群中单选引发的“事件”
Mar 05 Javascript
jQuery EasyUI API 中文文档 - Draggable 可拖拽
Sep 29 Javascript
JS嵌套函数调用上下文的问题解决
Mar 26 Javascript
JavaScript+html5 canvas绘制的小人效果
Jan 27 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
Jul 14 Javascript
简单模拟node.js中require的加载机制
Oct 27 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
Apr 11 Javascript
解决vue路由后界面没有变化,但是链接有的问题
Sep 01 Javascript
详解小程序如何避免多次点击,重复触发事件
Apr 08 Javascript
js实现烟花特效
Mar 02 Javascript
jquery实现轮播图特效
Apr 12 jQuery
JS组件库AlloyTouch实现图片轮播过程解析
May 29 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学习笔记之一
2011/01/17 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
Javascript事件实例详解
2013/11/06 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
js+html获取系统当前时间
2017/11/10 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
小程序实现多列选择器
2019/02/15 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python实现接受任意个数参数的函数方法
2018/04/21 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
python圣诞树编写实例详解
2020/02/13 Python
互动出版网:专业书籍
2017/03/21 全球购物
纽约海:Sea New York
2018/11/04 全球购物
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
智能室内花园:Click & Grow
2021/01/29 全球购物
老人祝寿主持词
2014/03/28 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
2019各种保证书范文
2019/06/24 职场文书
创业计划书之物流运送
2019/09/17 职场文书
CPU不支持Windows11系统怎么办
2021/11/21 数码科技
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript