JavaScript中==操作符背后的类型转换机制是怎样的?

2026-04-09 04:080阅读0评论SEO问题
  • 内容介绍
  • 相关推荐

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

JavaScript中==操作符背后的类型转换机制是怎样的?

抛砖引玉+按照常规的逻辑来说,我们判断两个值是否相等会遵循以下规则:但是我看下面一组值:[==0 //=true][==false //=true][!={} //=true][==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。
iii.若x与y为相等数值, 返回true。

阅读全文

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

JavaScript中==操作符背后的类型转换机制是怎样的?

抛砖引玉+按照常规的逻辑来说,我们判断两个值是否相等会遵循以下规则:但是我看下面一组值:[==0 //=true][==false //=true][!={} //=true][==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。
iii.若x与y为相等数值, 返回true。

阅读全文