JavaScript中==操作符背后的类型转换机制是怎样的?
- 内容介绍
- 相关推荐
本文共计3118个文字,预计阅读时间需要13分钟。
抛砖引玉+按照常规的逻辑来说,我们判断两个值是否相等会遵循以下规则:但是我看下面一组值:[==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分钟。
抛砖引玉+按照常规的逻辑来说,我们判断两个值是否相等会遵循以下规则:但是我看下面一组值:[==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。

