浅谈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表单常用验证集合
Jan 16 Javascript
Jquery 点击按钮显示和隐藏层的代码
Jul 25 Javascript
jQuery判断一个元素是否可见的方法
Jun 05 Javascript
javascript自动切换焦点控制效果完整实例
Feb 02 Javascript
vue的props实现子组件随父组件一起变化
Oct 27 Javascript
微信开发 使用picker封装省市区三级联动模板
Oct 28 Javascript
关于Vue.js一些问题和思考学习笔记(1)
Dec 02 Javascript
微信小程序 页面跳转及数据传递详解
Mar 14 Javascript
webpack公共组件引用路径简化小技巧
Jun 15 Javascript
vue.js通过路由实现经典的三栏布局实例代码
Jul 08 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
Mar 15 Javascript
JS实现九宫格拼图游戏
Jun 28 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
详解:――如何将图片储存在数据库里
2006/12/05 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
javascript里的条件判断
2007/02/27 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
理解JavaScript原型链
2016/10/25 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
JavaScript Image对象实现原理实例解析
2020/08/26 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
python使用range函数计算一组数和的方法
2015/05/07 Python
python对数组进行反转的方法
2015/05/20 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
PyQt5实现下载进度条效果
2018/04/19 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
试用期转正鉴定评语
2014/01/27 职场文书
大学军训感言800字
2014/02/27 职场文书
预备党员转正考核材料
2014/06/03 职场文书
幼儿教师个人总结
2015/02/05 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
入党积极分子考察意见
2015/06/02 职场文书
赤壁观后感(2)
2015/06/15 职场文书