美文网首页
再学JS--数据类型转换之隐式转换

再学JS--数据类型转换之隐式转换

作者: Territory_Cheng | 来源:发表于2020-07-16 11:19 被阅读0次

一元操作符 +

当 + 运算符作为一元操作符的时候,相当于Number()

console.log(+'1')  // 1

当输入的值为对象的时候,执行以下几步逻辑:

  1. 如果值为基本类型,则直接返回
  2. 否则,调用valueOf方法,如果返回一个原始值,则JavaScript将其返回
  3. 否则,调用toString方法,如果返回一个原始值,则JavaScript将其返回
  4. 否则,JavaScript抛出一个类型错误异常
console.log(+['1'])  // 1
console.log(+['1', '2', '3'])  // NaN
console.log(+{})  // NaN

二元操作符 +

Null和数字
console.log(null + 1)  // 1

根据执行逻辑,null是基本类型执行返回,1也是基本类型执行返回

两边都不是字符串,执行计算,null转换为0,所以返回1

数组与数组
console.log([] + [])  // ''

根据执行逻辑,[]返回的是toString结果,为'',两边都是字符串,执行拼接操作,故返回''

数组与对象
console.log([] + {})  // '[object, object]'

[]返回的为'',{}返回的为'[object, object]',两边都是字符串,执行拼接操作,故返回'[object, object]'

==

==进行比较的时候,遵循下面的规范

  1. 如果x与y是同一类型
    1. x是undefined,返回true
    2. x是Null,返回true
    3. x是数字
      1. x是NaN,返回false
      2. y是NaN,返回false
      3. x与y相等,返回true
      4. x是+0,y是-0,返回true
      5. x是-0,y是+0,返回true
      6. 返回false
    4. x是字符串,完全相等返回true,否则false
    5. x是布尔值,x和y都是true或者false,返回true,否则返回false
    6. x和y都是指向同一对象,返回true,否则返回false
  2. x是null并y是undefined,返回true
  3. x是undefined并且y是null,返回true
  4. x是数字,y是字符串,判断x==Number(y)
  5. x是字符串,y是数字,判断Number(x) == y
  6. x是布尔值,判断Number(x) == y
  7. y是布尔值,判断x == Number(y)
  8. x不是数字或字符串,y是对象,y基于上面的规则进行判断
  9. x是对象,y不是数字或字符串,x基于上面的规则进行判断
  10. 返回false

相关文章

  • 再学JS--数据类型转换之隐式转换

    一元操作符 + 当 + 运算符作为一元操作符的时候,相当于Number() 当输入的值为对象的时候,执行以下几步逻...

  • 再学JS--数据类型转换之显式转换

    原始值转布尔值 在JavaScript中,只有6种值可以被转换为false,其他都会被转换为true 原始值转数字...

  • JS里的数据类型转换

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

  • 数据类型转换

    写在前面 C/C++编程中常见数据类型转换,包括隐式类型转换和显式类型转换。 1. 隐式类型转换 隐式类型转换在以...

  • Java Script 类型转换以及运算

    (一)类型转换 1、隐式转换 num 被隐式转换为true 2、显式转换 其他数据类型转(布尔类型)1、数字:0和...

  • 【二】基本数据类型和Eclipse使用

    1.基本数据类型(4类8种) 2.强制类型转换 隐式转换隐式转换 显式转换显式转换 3.Eclipse使用介绍 E...

  • C语言类型转换

    一、隐式类型转换 隐式类型转换是指系统自动将取值范围小的数据类型转换为数据取值范围大的数据类型,它是由系统自动转换...

  • 浮点数转换为新类型时必须做范围检查

    在C语言中,数据类型转换一般可分为隐式转换和显式转换,也称为自动转换和强制转换。其中,常见的隐式转换有4种,如下所...

  • Java数据类型与运算符

    隐式转换 在这段代码中就发生了隐式数据类型转换,本来是byte数据类型的y因为与int x相加,byte被隐式提升...

  • javascript数据类型隐式转换

    javascript数据类型隐式转换 一、函数类 isNaN()改函数会对参数进行隐式的Number()转换,如果...

网友评论

      本文标题:再学JS--数据类型转换之隐式转换

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