浅谈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 相关文章推荐
MooBox 基于Mootools的对话框插件
Jan 20 Javascript
jquery弹窗插件colorbox绑定动态生成元素的方法
Jun 20 Javascript
jQuery中is()方法用法实例
Jan 06 Javascript
通过点击jqgrid表格弹出需要的表格数据
Dec 02 Javascript
javascript实现input file上传图片预览效果
Dec 31 Javascript
JS简单设置下拉选择框默认值的方法
Aug 20 Javascript
AngularJS自定义控件实例详解
Dec 13 Javascript
vue-cli中的babel配置文件.babelrc实例详解
Feb 22 Javascript
Vue中的$set的使用实例代码
Oct 08 Javascript
JavaScript如何借用构造函数继承
Nov 06 Javascript
微信小程序登陆注册功能的实现代码
Dec 10 Javascript
Element-UI+Vue模式使用总结
Jan 02 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自动跳转中英文页面
2008/07/29 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
php中chdir()函数用法实例
2014/11/13 PHP
学习ExtJS fit布局使用说明
2009/10/08 Javascript
jQuery之排序组件的深入解析
2013/06/19 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
Python3实现连接SQLite数据库的方法
2014/08/23 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
css3实现一个div设置多张背景图片及background-image属性实例演示
2017/08/10 HTML / CSS
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
Linux上比较文件的命令都有哪些
2012/02/24 面试题
大学校园毕业自我鉴定
2014/01/15 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
医学会议开幕词
2016/03/03 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript
详解Go与PHP的语法对比
2021/05/29 PHP
Python何绘制带有背景色块的折线图
2022/04/23 Python