js中一些隐式转换总结

js中一些隐式转换的总结

js中的不同的数据类型之间的比较转换规则如下

参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Equality_comparisons_and_sameness

一、在JavaScript中,相等性判断有三种,分别是:

  1. 严格相等比较 ===
  2. 抽象相等比较 ==
  3. 以及 Object.is

在比较两件事情时,双等号将执行类型转换; 三等号将进行相同的比较,而不进行类型转换。

二、非严格相等符比较规则

首先比较两个值是否相等,然后在比较前将两个被比较的值转换为相同类型。在转换后(等式的一边或两边都可能被转换),最终的比较方式等同于全等操作符 === 的比较方式。 相等操作符满足交换律。

转换规则表:

在这里插入图片描述

(1)Truthy(真值)、Falsy(假值)
(2)Falsy值(假值)包括:false、undefined、null、正负0、NaN、”"
(3)ToPrimitive(A)通过尝试调用 A 的A.toString() 和 A.valueOf() 方法,将参数 A 转换为原始值(Primitive)

(1)比较值属性相同

Undefined     Undefined      true
Null          Null           true
Number        Number         A===B
Boolean       Boolean        A===B
Object        Object         A===B

(2)Undefined

Undefined     Null           true
              Number         false
              String         false
              Boolean        false
              Object         IsFalsy(B)

(3)Null

Null          Undefined      true
			  Number		 false
			  String         false
			  Boolean        false
			  Object         IsFalsy(B)

(4)Number

Number        Undefined      false
			  Null			 false
			  String         A === ToNumber(B)
			  Boolean        A === ToNumber(B) 
			  Object         IsFalsy(B)

(5)String

String       Undefined       false
			 Null			 false
			 Number			 ToNumber(A) === B
			 Boolean		 ToNumber(A) === ToNumber(B)
			 Object          ToPrimitive(B) == A

(6)Boolean

Boolean      Undefined		 false
			 Null			 false
			 Number			 ToNumber(A) === B
			 String			 ToNumber(A) === ToNumber(B)
			 Object			 ToNumber(A) == ToPrimitive(B)

(7)Object

Object		 Undefined		 false
			 Null			 false
			 Number			 ToPrimitive(A) == B
			 String			 ToPrimitive(A) == B
			 Boolean		 ToPrimitive(A) == ToNumber(B)	
posted @ 2022-12-06 22:18  轻风细雨_林木木  阅读(62)  评论(0编辑  收藏  举报