美文网首页
JS数据类型转换规律汇总

JS数据类型转换规律汇总

作者: 空压机百科 | 来源:发表于2020-02-10 22:11 被阅读0次
基本数据类型

1、数字(number)
2、字符串(string)
3、布尔(boolean)
4、空(null)
5、未定义(undefined)

引用类型

对象(object)
    普通对象
    数组对象(Array)
    正则(RegExp)
    日期对象(Date)
函数(function)

把其他数据类型转换为number
  • 需要转换的情况
    1、isNaN检测,当检测的值不是数字类型,浏览器会自己调用Number方法先把它转换为数字,然后在检测是否为非有效数字
    2、基于parseInt / parseFloat手动转换为数字类型(与Number区别在于字符串转化分析上,parseInt把字符串中整数部分解析出来,parseFloat把一个字符串中小数部分也解析出来。从字符串最左边开始查找有效数字字符并转换为数字,但遇到非有效数字字符查找结束)
    3、数学运算:+ - * / %,但是“+”不仅仅是数学运算还可能是字符串拼接。但是 i++ 就是单纯的数学运算不是字符串拼接
    4、基于“==”比较,有时候也会把其它值转换为数字类型
  • 转换规律
    1、字符串转数字
    转换方法:Number(浏览器自行转换都是基于这个方法)
    只要遇到一个非有效数字字符,结果都是NaN,空字符串是0
    2、布尔转换数字
    true => 1      false => 0
    3、没有转换为数字
    null => 0      undefined => NaN
    4、引用类型转换数字
    首先都转换为字符串(toString),然后再转换为数字
把其它类型值转换为字符串
  • 需要转换的情况
    1、基于alert / confirn / prompt / document.write等方法输出内容的时候,会把输出的值转换为字符串再输出
    2、基于“+”字符串拼接
    3、把引用值转化为数字的时候,首先会转换为字符串,然后再转换数字
    4、给对象设置属性名,如果不是字符串,首先转换为字符串,然后再当作属性存储到对象中
    5、手动调用toString / toFixed / join / String等方法 还有更多....
  • 转换规律
    除了对象,都是理解的转换结果加双引号或单引号“” / ‘’
    对象转换结果是 "[object Object]"
    ......
把其它类型换为布尔类型
  • 需要转换的情况
    1、基于 ! / !! / Boolean等方法转换
    !:先把其他数据类型转化为布尔类型然后取反
    !!:同样把其他数据类型转化为布尔类型然后取反两次
    2、条件判断中的条件最后都会转换为布尔类型
    ......
  • 转换规律
    只有空字符串、0、null、undefined、NaN转换结果是false,其余都转换为true
特殊情况:数学运算和字符串拼接“+”

当表达式中出现字符串就是字符串拼接,否则就是数学运算

1 + true  // 数学运算结果为2
“1” + true  // 字符串凭借结果为"1true"
[12] + 10  //  虽然没有看见字符串,但是引用类型转换数字首先转换为字符串,所借就是字符串拼接。结果为"1210"
({}) + 10 //  结果为"[object Object]10"
[] + 10  //  结果为“10”
{} + 10  //  结果是10,因为{}代表代码块, +10才是我们的操作,严格写法{}; +10
特殊情况:“==”进行比较的时候,如果左右两边的数据类型不一样,则先转换为相同类型,再进行比较

对象 == 对象:不一定相等,因为对象操作的是引用地址,地址不同则不相等
对象 == 数字:把对象转换为数字
对象 == 布尔:把对象转换为数字,把布尔也转换为数字
对象 == 字符串:把对象转换为数字,把字符串也转换为数字
字符串 == 数字:字符串转换为数字
字符串 == 布尔:都转换为数字
布尔 == 数字:布尔转换为数字
不同情况的比较都是把其它值转换为数字再进行比较

null == undefined:true
null === undefined:false
null && undefined和谁都不相等
NaN == NaN:和谁都不相等包括自己结果为 false

[] == true //都转换为数字 ==> 0 == 1结果为false
[] == false //都转换为数字 ==> 0 == 0结果为true
![] == true //先计算![],把数组转换为布尔取反 ==> false == false结果为false
![] == false //false == false结果为true

相关文章

  • JS数据类型转换规律汇总

    基本数据类型 1、数字(number)2、字符串(string)3、布尔(boolean)4、空(null)5、未...

  • 2、强制数据类型转换

    数据类型转换: 在js中,数据类型的转换有两种,分别是自动转换和强制转换 自动转换: 自动转换是用JS进行某些操作...

  • JS里的数据类型转换

    在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换。 1, 显式数据类型转换 a:转数字: 1)Numb...

  • javaScript中数据类型转换方法

    JS 数据类型转换 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了...

  • 数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了...

  • JavaScript的显式转换和隐式转换

    js的显式转换和隐式转换都是数据类型的转换;js的数据类型是弱类型的,即可以给变量赋值为任意的数据类型,当进行运算...

  • JS隐式数据类型转换

    隐式数据类型转换介绍 前面有总结过 JS数据类型转换 Number(), toString(), parseInt...

  • JS的基本小结

    JS基本输出方式 JS数据类型 变量 常量 变量常量小练习 声明提前 隐式转换 显示转换/强制转换

  • JavaScript学习笔记.md

    学习材料————廖雪峰js教程 数据类型 ===与== == 自动转换数据类型再比较;=== 不转换类型 (更好...

  • JavaScript基础总结

    ✍目录总览:(JS概念与组成、JS格式规范、JS基本语法【输入、输出、变量、数据类型、数据类型转换、运算符、流程控...

网友评论

      本文标题:JS数据类型转换规律汇总

      本文链接:https://www.haomeiwen.com/subject/uxszxhtx.html