浅谈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 相关文章推荐
有关于JS构造函数的重载和工厂方法
Apr 07 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
Nov 19 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
Jun 30 Javascript
JavaScript获得页面base标签中url的方法
Apr 03 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
Jan 10 Javascript
JS实现复选框的全选和批量删除功能
Apr 05 Javascript
详解angular ui-grid之过滤器设置
Jun 07 Javascript
js console.log打印对象时属性缺失的解决方法
May 23 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
Sep 25 Javascript
vue离开当前页面触发的函数代码
Sep 01 Javascript
jquery插件实现搜索历史
Apr 24 jQuery
微信小程序开发探究
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
phpMyAdmin 安装及问题总结
2009/05/28 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
2011/03/29 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
老生常谈PHP位运算的用途
2017/03/12 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
IE中的File域无法清空使用jQuery重设File域
2014/04/24 Javascript
jQuery 重复加载错误以及修复方法
2014/12/16 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
python一键升级所有pip package的方法
2017/01/16 Python
深入理解Python对Json的解析
2017/02/14 Python
transform python环境快速配置方法
2018/09/27 Python
python3实现斐波那契数列(4种方法)
2019/07/15 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
EGO Shoes美国/加拿大:英国时髦鞋类品牌
2018/08/04 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
生物制药专业求职信
2014/03/11 职场文书
酒店管理求职信范文
2014/04/06 职场文书
英语系本科生求职信
2014/07/15 职场文书
春游踏青活动方案
2014/08/14 职场文书
工作年限证明模板
2014/11/01 职场文书
2014年安全员工作总结
2014/11/13 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书