浅谈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 相关文章推荐
jquery创建一个ajax关键词数据搜索实现思路
Feb 26 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
Feb 25 Javascript
分享一个插件实现水珠自动下落效果
Jun 01 Javascript
JavaScript判断微信浏览器实例代码
Jun 13 Javascript
探究react-native 源码的图片缓存问题
Aug 24 Javascript
vue-devtools的安装步骤
Apr 23 Javascript
angular5 子组件监听父组件传入值的变化方法
Sep 30 Javascript
原生JS检测CSS3动画是否结束的方法详解
Jan 27 Javascript
js实现表格数据搜索
Aug 09 Javascript
vue实现移动端H5数字键盘组件使用详解
Aug 25 Javascript
vue3.0 数字翻牌组件的使用方法详解
Apr 20 Vue.js
js面向对象编程OOP及函数式编程FP区别
Jul 07 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游戏编程25个脚本代码
2011/02/08 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
ThinkPHP水印功能实现修复PNG透明水印并增加JPEG图片质量可调整
2014/11/05 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
javascript中关于break,continue的特殊用法与介绍
2012/05/24 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
vue多页面开发和打包正确处理方法
2018/04/20 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
JavaScript实现答题评分功能页面
2020/06/24 Javascript
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
django文档学习之applications使用详解
2018/01/29 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
python程序封装为win32服务的方法
2021/03/07 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
初学者学习Python好还是Java好
2020/05/26 Python
Python代码需要缩进吗
2020/07/01 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
简历中自我评价分享
2013/10/09 职场文书
办公室内勤工作职责
2013/12/11 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
银行员工考核评语
2014/12/31 职场文书
营销计划书范文
2015/01/17 职场文书
前台岗位职责范本
2015/04/16 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
PostgreSQL存储过程实用脚本(二):创建函数入门
2021/04/05 PostgreSQL