浅谈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 相关文章推荐
javascript 清除输入框中的数据
Apr 13 Javascript
JavaScript的Module模式编程深入分析
Aug 13 Javascript
含有CKEditor的表单如何提交
Jan 09 Javascript
js获取当前地址 JS获取当前URL的示例代码
Feb 26 Javascript
jQuery表格行上移下移和置顶的实现方法
Oct 08 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
Mar 23 Javascript
webpack学习教程之前端性能优化总结
Dec 05 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
微信小程序拍照和摄像功能实现方法示例
Feb 01 Javascript
详解webpack4.x之搭建前端开发环境
Mar 28 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
May 07 Javascript
解决Vue动态加载本地图片问题
Oct 09 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类
2008/04/09 PHP
php 操作excel文件的方法小结
2009/12/31 PHP
PHP定时任务延缓执行的实现
2014/10/08 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Python检测网络延迟的代码
2018/05/15 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
对python修改xml文件的节点值方法详解
2018/12/24 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
python 制作磁力搜索工具
2021/03/04 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
CSS3实现时间轴效果
2016/07/11 HTML / CSS
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
墨西哥网上超市:Superama
2018/07/10 全球购物
同学聚会老师邀请函
2014/01/28 职场文书
小学生家长寄语
2014/04/02 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
家长高考寄语
2015/02/27 职场文书
信仰纪录片观后感
2015/06/08 职场文书
主婚人致辞精选
2015/07/28 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python