浅谈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 相关文章推荐
慎用 somefunction.prototype 分析
Jun 02 Javascript
js预载入和JavaScript Image()对象使用介绍
Aug 28 Javascript
Javascript中的isNaN函数使用说明
Nov 10 Javascript
jQuery操作表单常用控件方法小结
Mar 23 Javascript
浅析JavaScript中命名空间namespace模式
Jun 22 Javascript
javascript实现文字无缝滚动
Dec 27 Javascript
详解axios在node.js中的post使用
Apr 27 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
Aug 24 jQuery
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
Nov 05 Javascript
Vue中的transition封装组件的实现方法
Aug 13 Javascript
Openlayers显示瓦片网格信息的方法
Sep 28 Javascript
Vue自定义铃声提示音组件的实现
Jan 22 Vue.js
微信小程序开发探究
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控制网页过期时间的代码
2008/09/28 PHP
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
php不用正则验证真假身份证
2013/11/06 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
零基础php编程好学吗
2019/10/11 PHP
javaScript中with函数用法实例分析
2015/06/08 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
Python下使用Psyco模块优化运行速度
2015/04/05 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
Python list和str互转的实现示例
2020/11/16 Python
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
语文教育专业推荐信范文
2013/11/25 职场文书
实习生单位鉴定意见
2013/12/04 职场文书
火锅店的活动方案
2014/08/15 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
开除员工通知
2015/04/22 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL