浅谈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 相关文章推荐
JSP跨iframe如何传递参数实现代码
Sep 21 Javascript
node.js中的url.resolve方法使用说明
Dec 10 Javascript
Javascript原型链的原理详解
Jan 05 Javascript
详解Vue 实例中的生命周期钩子
Mar 21 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
Jun 13 Javascript
JQuery判断正整数整理小结
Aug 21 jQuery
pm2 部署 node的三种方法示例
Oct 20 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
Jan 09 Javascript
详解vue移动端项目代码拆分记录
Mar 15 Javascript
如何从零开始手写Koa2框架
Mar 22 Javascript
echarts多条折线图动态分层的实现方法
May 24 Javascript
vue分页插件的使用方法
Dec 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制作简单的内容采集器的代码
2007/11/28 PHP
php5 mysql分页实例代码
2008/04/10 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
JavaScript 字符串常用操作小结(非常实用)
2016/11/30 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
Electron-vue开发的客户端支付收款工具的实现
2019/05/24 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
python实用代码片段收集贴
2015/06/03 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
Linux下python3.7.0安装教程
2018/07/30 Python
Django Celery异步任务队列的实现
2019/07/24 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
初中三年学生的学习自我评价
2013/11/13 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
廉政承诺书
2015/01/19 职场文书
离职感谢信
2015/01/21 职场文书
公司开会通知
2015/04/20 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
python创建字典及相关管理操作
2022/04/13 Python