国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

JavaScript高階教程之“==”隱藏下的類型轉換

2024-05-06 16:49:50
字體:
來源:轉載
供稿:網友

拋磚引玉

按照正常的邏輯來說,我們判斷兩個值是否相等會遵循以下規則:

JavaScript,==,類型轉換

但是我看下面一組值:

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

居然沒有按照我們的劇本走,那它比較規則又是什么?下面我就來分析一波。

“==”的比較規則

首先我們先去ECMAScript5.1中文版( http://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。
        iv.若x 為 +0 且 y為−0, 返回true。
        v.若x 為 −0 且 y為+0, 返回true。
        vi返回false。
    d.若Type(x)為String, 則當x和y為完全相同的字符序列(長度相等且相同字符在相同位置)時返回true。 否則, 返回false。
    e.若Type(x)為Boolean, 當x和y為同為true或者同為false時返回true。 否則, 返回false。
    f.當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

看完ECMAScript5.1中文版的介紹之后,相信很多小伙伴的心情應該是這樣的:

JavaScript,==,類型轉換

別看上面說的有點花里胡哨的,其實我們可以用很簡單的話來總結出來。由于本篇文章核心是“==”是如何進行類型轉換,我就總結一下類型不同的情況下“==”是如何比較的。

  • 當數據類型為Boolean類型或者String類型時,比較時需要轉換成Number類型。
  • 當數據類型為引用類型時,需要轉換成原始數據類型。當轉換后的原始數據類型為Boolean類型或者String類型,則繼續轉換成Number類型。
  • undefined和null跟任何值在“==”下都返回false,但二者在“==”下返回true。

具體流程圖如下:

JavaScript,==,類型轉換

備注:

Javascript的數據類型可以分為以下兩種:

  • 原始數據類型(null、undefined、Number、String、Boolean、Symbol(Es6才引入的))
  • 引用類型 (Object)

Boolean類型、String類型轉換成Number類型的規則(ToNumber)

Boolean類型

 

Boolean Number
true 1
false 0

 

 

String類型

標準的數字格式
如果是標準的數字格式,轉換成Number類型相比不用多說,比如下面這幾個栗子
注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 读书| 类乌齐县| 红原县| 遂川县| 巴彦县| 元氏县| 枞阳县| 华宁县| 临桂县| 洪江市| 金寨县| 县级市| 芦山县| 长兴县| 宜州市| 吐鲁番市| 平南县| 房产| 德保县| 西藏| 楚雄市| 东丰县| 囊谦县| 虎林市| 荆门市| 北流市| 蓝田县| 上犹县| 吉林市| 湖北省| 乌兰浩特市| 札达县| 宁城县| 新宁县| 鞍山市| 灵丘县| 镇坪县| 延吉市| 阳东县| 武清区| 武夷山市|