美文网首页
JavaScript中==的类型转换

JavaScript中==的类型转换

作者: 六寸光阴丶 | 来源:发表于2019-09-30 19:06 被阅读0次

写在前面

如果本文对您有所帮助,就请点个关注吧!

1. 首先,要记住null == undefined始终为true,这个暂时没有道理可言,记住就好了。
2. 然后看==前后有没有NaN,有的话都是返回false。NaN不等于任何值,包括其本身。
3. 布尔值会转成数字类型,true转成1,false转成0。
 true == 1; // true
 false == 0; // true
 true == 2; //false
4. 数字和字符串比较,字符串会转换成数字。
 "123" == 123; // true
 "0" == 0; // true
 "1a" == 1; // false,"1a"转成数字是NaN
5. undefined和null除了和undefined或null相等,和其他相比都是false
 undefined == undefined; // true
 undefined == false; // false
 undefined == 0; // false
6. 数字或者字符串和对象相比,对象使用valueOf()或者toString()方法转换。
 [] == false; // true
 {} == false; // 报错
 [] == 0; // true
 [1] == 1; // true
7. ==等于运算符将原始值和其包装对象视为相等,但===全等运算符将它们视为不等。
var a = new Boolean(false);
a == 0; // true

ES5规范11.9.3抽象相等比较算法

比较运算x==y,其中x和y是值,产生true或者false。这样的比较如下方式进行:
  1. 若Type(x)与Type(y)相同,则
    1. 若Type(x)为Undefined,返回true。
    2. 若Type(x)为Null,返回true。
    3. 若Type(x)为Number,则
      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. 若Type(x)为String,则当x和y为完全相同的字符序列(长度相等且相同字符在相同位置)时返回true。否则,返回false。
    5. 若Type(x)为Boolean,当x和y为同为true或者同为false时返回true。否则,返回false。
    6. 当x和y为引用同一对象时返回true。否则,返回false。
  2. 若x为null且y为undefined,返回true。
  3. 若x为undefined且y为null,返回true。
  4. 若Type(x)为Number且Type(y)为String,返回comparison x == ToNumber(y)的结果。
  5. 若Type(x)为String且Type(y)为Number,返回比较ToNumber(x) == y的结果。
  6. 若Type(x)为Boolean,返回比较ToNumber(x) == y的结果。
  7. 若Type(y)为Boolean,返回比较x == ToNumber(y)的结果。
  8. 若Type(x)为String或Number,且Type(y)为Object,返回比较x == ToPrimitive(y)的结果。
  9. 若Type(x)为Object且Type(y)为String或Number,返回比较ToPrimitive(x) == y的结果。
  10. 返回false。
    注:相等运算符不总是传递的。例如,两个不同的String对象,都表示相同的字符串值;==运算符认为每个String对象都与字符串值相等,但是两个字符串值对象互不相等。例如:
new String("a") == “a” 和 "a" == new String("a")皆为true。
new String("a") == new String("a")为false。

相关文章

  • JS中的类型转换

    JavaScript 中的类型转换 JavaScript 基本数据类型 JavaScript 中的一共有 8 中内...

  • 类型转换

    在JavaScript中,共有两种类型转换:隐式类型转换,显示类型转换。 “字符串”转换为“数字” 在JavaSc...

  • 前端常见面试题(十三)@郝晨光

    列举三种强制类型转换和两种隐式类型转换 JavaScript是一门弱类型语言,在JavaScript中声明变量不需...

  • JavaScript中的类型转换

    ECMAScript6 中新加入了一种类型(Symbol),暂且搁置,之后再说,今天主要说一说ES5 中的几种数据...

  • 【JavaScript中的类型转换】

    字符串转换为数字的方法 字符串转换为数字的方法可以分为两种,一个是显式转换,一种是隐式转换。 显式转换是通过函数的...

  • JavaScript中==的类型转换

    写在前面 如果本文对您有所帮助,就请点个关注吧! 1. 首先,要记住null == undefined始终为tru...

  • 必考知识点-JavaScript类型转换(讲原理)

    一、类型转换先说类型 类型转换指将一种类型转换为另一种类型,那我们首先来说说JavaScript中的类型。 1.1...

  • ToBoolean 转换布尔值

    JavaScript中,抽象值操作ToBoolean用于将数据类型强制转换为布尔类型 以下数据值在强制类型转换为b...

  • JavaScript的强制类型转换

    强制类型转换 将javascript的值从一种类型转换为另一种类型的值——>类型转换隐式类型转换——>强制类型转换...

  • javascript强制类型转换

    javascript强制类型转换 一、转换为数值类型 Number(参数) 把任何类型转换为数值类型A.如果是布尔...

网友评论

      本文标题:JavaScript中==的类型转换

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