JavaScript中==操作符背后的类型转换原理是什么?

更新于
2026-10-01 17:34:30
0阅读来源:SEO问题
  • 内容介绍
  • 相关推荐

本文共计3118个文字,预计阅读时间需要13分钟。

JavaScript中==操作符背后的类型转换原理是什么?

抛砖引玉+按照正常的逻辑来说,我们判断两个值是否相等会遵循以下规则:- 但我看下面一组值: - []==0 // true - []==false // true - []=={} // true - [10]==10 // true - ''==false // true - ''==0 // true - undefined==null // true

抛砖引玉

按照正常的逻辑来说,我们判断两个值是否相等会遵循以下规则:


但是我看下面一组值:

[]==0 //true []==false //true []==!{} //true [10]==10 //true '0'==false //true ''==0 //true undefined==null //true !null==true //true

居然没有按照我们的剧本走,那它比较规则又是什么?下面我就来分析一波。

“==”的比较规则

首先我们先去ECMAScript5.1中文版( lzw.me/pages/ecmascrip... )找一下“==”的比较规则,如下:

1.若Type(x)与Type(y)相同, 则
a.若Type(x)为Undefined, 返回true。
b.若Type(x)为Null, 返回true。
c.若Type(x)为Number, 则
i.若x为NaN, 返回false。
ii.若y为NaN, 返回false。

阅读全文

本文共计3118个文字,预计阅读时间需要13分钟。

JavaScript中==操作符背后的类型转换原理是什么?

抛砖引玉+按照正常的逻辑来说,我们判断两个值是否相等会遵循以下规则:- 但我看下面一组值: - []==0 // true - []==false // true - []=={} // true - [10]==10 // true - ''==false // true - ''==0 // true - undefined==null // true

抛砖引玉

按照正常的逻辑来说,我们判断两个值是否相等会遵循以下规则:


但是我看下面一组值:

[]==0 //true []==false //true []==!{} //true [10]==10 //true '0'==false //true ''==0 //true undefined==null //true !null==true //true

居然没有按照我们的剧本走,那它比较规则又是什么?下面我就来分析一波。

“==”的比较规则

首先我们先去ECMAScript5.1中文版( lzw.me/pages/ecmascrip... )找一下“==”的比较规则,如下:

1.若Type(x)与Type(y)相同, 则
a.若Type(x)为Undefined, 返回true。
b.若Type(x)为Null, 返回true。
c.若Type(x)为Number, 则
i.若x为NaN, 返回false。
ii.若y为NaN, 返回false。

阅读全文