浅谈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 相关文章推荐
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
Feb 18 Javascript
JavaScript 动态创建VML的方法
Oct 14 Javascript
JS 图片缩放效果代码
Jun 09 Javascript
JavaScript中__proto__与prototype的关系深入理解
Dec 04 Javascript
js关闭父窗口时关闭子窗口
Apr 01 Javascript
JavaScript作用域与作用域链深入解析
Dec 06 Javascript
jQuery实现的输入框选择时间插件用法实例
Feb 28 Javascript
JavaScript中的Number数字类型学习笔记
May 26 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
如何在项目中使用log4.js的方法步骤
Jul 16 Javascript
JS查找孩子节点简单示例
Jul 25 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 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
帝国cms目录结构分享
2015/07/06 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
javascript Array.remove() 数组删除
2009/08/06 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
ECMAScript6--解构
2017/03/30 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
2017/05/26 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
angular多语言配置详解
2019/05/16 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
python中的yield使用方法
2014/02/11 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
表彰先进的通报
2014/01/31 职场文书
暑期社会实践方案
2014/02/05 职场文书
优秀学生事迹材料
2014/02/08 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
学习教师法的心得体会
2014/09/03 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
索赔员岗位职责
2015/02/15 职场文书
2016中秋节问候语
2015/11/11 职场文书
小学语文教师研修日志
2015/11/13 职场文书
Go语言应该什么情况使用指针
2021/07/25 Golang