成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

關(guān)于js中的 “==” 與 “===”

hizengzeng / 1975人閱讀

摘要:在中,和運(yùn)算符用來(lái)比較兩個(gè)值是否相等,但是他們對(duì)于相等的定義是不同的。如果不是正常值比如拋出一個(gè)錯(cuò)誤,中斷執(zhí)行。如果不是正常值,中斷執(zhí)行。如果與相同,執(zhí)行嚴(yán)格相等運(yùn)算。如果為,或,為,則返回比較的結(jié)果。

在js中,"==" 和 "==="運(yùn)算符用來(lái)比較兩個(gè)值是否相等,但是他們對(duì)于相等的定義是不同的。兩個(gè)運(yùn)算符都可以用來(lái)比較任意類型的操作數(shù),如果兩個(gè)操作數(shù)相等,返回true,否則,返回false。"===" 嚴(yán)格相等運(yùn)算符,用來(lái)比較兩個(gè)操作數(shù)是否嚴(yán)格相等。"==" 相等運(yùn)算符,用來(lái)比較兩個(gè)操作數(shù)是否相等。
詳細(xì)信息可參照ECMA標(biāo)準(zhǔn)(戳這里)。

Abstract Equality Comparison ==

== 相等操作符,在比較前會(huì)把比較的兩個(gè)數(shù)轉(zhuǎn)換成相同的數(shù)據(jù)類型之后,然后對(duì)兩個(gè)數(shù)進(jìn)行比較。轉(zhuǎn)換后,比較方式與 === 相同。

ECMA中比較規(guī)則如下:

The comparison x == y, where x and y are values, produces true or false.

1. ReturnIfAbrupt(x).
2. ReturnIfAbrupt(y).
3. If Type(x) is the same as Type(y), then
    Return the result of performing Strict Equality Comparison x === y.
4. If x is null and y is undefined, return true.
5. If x is undefined and y is null, return true.
6. If Type(x) is Number and Type(y) is String,
    return the result of the comparison x == ToNumber(y).
7. If Type(x) is String and Type(y) is Number,
    return the result of the comparison ToNumber(x) == y.
8. If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.
9. If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).
10. If Type(x) is either String, Number, or Symbol and Type(y) is Object, then
    return the result of the comparison x == ToPrimitive(y).
11. If Type(x) is Object and Type(y) is either String, Number, or Symbol, then
    return the result of the comparison ToPrimitive(x) == y.
12. Return false.

翻譯如下:

比較 x == y,當(dāng)x 和 y是正常值時(shí),返回 true 或者 false。

如果x不是正常值(比如拋出一個(gè)錯(cuò)誤),中斷執(zhí)行。

如果y不是正常值,中斷執(zhí)行。

如果Type(x)與Type(y)相同,執(zhí)行嚴(yán)格相等運(yùn)算x === y。

如果x為null且y為undefined,則返回true。

如果x為undefined,y為null,則返回true。

如果Type(x)是Number,Type(y)是String,返回比較結(jié)果 x == ToNumber(y)。

如果Type(x)是String,Type(y)是Number,返回比較結(jié)果ToNumber(x)== y。

如果Type(x)為Boolean,則返回比較結(jié)果ToNumber(x)== y。

如果Type(y)為Boolean,則返回比較結(jié)果x == ToNumber(y)。

如果Type(x)為String,Number或Symbol,Type(y)為Object,則返回比較的結(jié)果x == ToPrimitive(y)。

如果Type(x)是Object,Type(y)是String,Number或Symbol,那么
返回比較結(jié)果ToPrimitive(x)== y。

返回假。

簡(jiǎn)化一下 ,可以理解為:

如果兩個(gè)操作數(shù)類型相同,則進(jìn)行 x===y。

如果一個(gè)為null,另一個(gè)為undefined,則返回true。

如果兩個(gè)操作數(shù)均為基本數(shù)據(jù)類型,則把操作數(shù)轉(zhuǎn)換為Number類型進(jìn)行比較。

如果其中有一個(gè)操作數(shù)為Object,則調(diào)用對(duì)象的 toString 或者 valueOf 方法,將對(duì)象轉(zhuǎn)化為原始值進(jìn)行比較。

如果不滿足上述任何情況,則返回 false。

Strict Equality Comparison "==="

"===" 嚴(yán)格相等操作符,用來(lái)比較兩個(gè)操作數(shù)是否嚴(yán)格相等。

ECMA中比較規(guī)則如下:

1. If Type(x) is different from Type(y), return false.
2. If Type(x) is Undefined, return true.
3. If Type(x) is Null, return true.
4. If Type(x) is Number, then
    a. If x is NaN, return false.
    b. If y is NaN, return false.
    c. If x is the same Number value as y, return true.
    d. If x is +0 and y is ?0, return true.
    e. If x is ?0 and y is +0, return true.
    f. Return false.
5. If Type(x) is String, then
    a. If x and y are exactly the same sequence of code units (same length and same code           units at corresponding indices), return true.
    b. Else, return false.
6. If Type(x) is Boolean, then
    a. If x and y are both true or both false, return true.
    b. Else, return false.
7. If x and y are the same Symbol value, return true.
8. If x and y are the same Object value, return true.
9. Return false.

翻譯:

如果Type(x)與Type(y)不同,則返回false。

如果Type(x)為Undefined,則返回true。

如果Type(x)為Null,則返回true。

如果Type(x)是Number,那么

如果x是NaN,則返回false。

如果y是NaN,則返回false。

如果x與y的Number值相同,則返回true。

如果x為+0且y為-0,則返回true。

如果x是-0而y是+0,則返回true。

返回假。

如果Type(x)是String,那么

如果x和y是完全相同的代碼單元序列(相同長(zhǎng)度和相應(yīng)索引處的相同代碼單位),則返回true。

否則返回假。

如果Type(x)為Boolean,則
a.如果x和y都為true或都為false,則返回true。
b.否則返回假。

如果x和y是相同的符號(hào)值,則返回true。

如果x和y是相同的Object值,則返回true。

返回假。

簡(jiǎn)化一下,可以理解為:

如果兩個(gè)操作數(shù)類型不相同,返回false。

undefined === undefined => true

null === null => true

如果操作數(shù)的數(shù)據(jù)類型都為Number,當(dāng)兩個(gè)數(shù)的值相同時(shí),返回true, 否則返回 false。

注: -0 === +0   => true     +0 === -0 => true
    NaN 與任何值都不相等,包括他自己。 所以要判斷一個(gè)數(shù)值是否為NaN, 可采用 x !== x ,只有NaN 返回true

如果操作數(shù)的數(shù)據(jù)類型都為String或Boolean時(shí),只有x和y完全相同,返回ture。

如果操作數(shù)的數(shù)據(jù)類型都為Object,只有兩個(gè)操作數(shù)指向的地址完全相同時(shí),返回true,否則返回false。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/91859.html

相關(guān)文章

  • JavaScript深入淺出

    摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對(duì)方法,包括,,。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸?,因此文中只看懂?8 成左右,希望能夠給大家?guī)?lái)幫助....(據(jù)說(shuō)是阿里的前端妹子寫的) this 的值到底...

    blair 評(píng)論0 收藏0
  • 正在失業(yè)中的《課多周刊》(第3期)

    摘要:正在失業(yè)中的課多周刊第期我們的微信公眾號(hào),更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。若有幫助,請(qǐng)把課多周刊推薦給你的朋友,你的支持是我們最大的動(dòng)力。是一種禍害譯本文淺談了在中關(guān)于的不好之處。淺談超時(shí)一運(yùn)維的排查方式。 正在失業(yè)中的《課多周刊》(第3期) 我們的微信公眾號(hào):fed-talk,更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。 若有幫助,請(qǐng)把 課多周刊 推薦給你的朋友,你的支持是我們最大的...

    robin 評(píng)論0 收藏0
  • 正在失業(yè)中的《課多周刊》(第3期)

    摘要:正在失業(yè)中的課多周刊第期我們的微信公眾號(hào),更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。若有幫助,請(qǐng)把課多周刊推薦給你的朋友,你的支持是我們最大的動(dòng)力。是一種禍害譯本文淺談了在中關(guān)于的不好之處。淺談超時(shí)一運(yùn)維的排查方式。 正在失業(yè)中的《課多周刊》(第3期) 我們的微信公眾號(hào):fed-talk,更多精彩內(nèi)容皆在微信公眾號(hào),歡迎關(guān)注。 若有幫助,請(qǐng)把 課多周刊 推薦給你的朋友,你的支持是我們最大的...

    Joyven 評(píng)論0 收藏0
  • 關(guān)于 Glob (gulp)的學(xué)習(xí)

    摘要:參考資料下文是關(guān)于的方法的第一個(gè)參數(shù)的學(xué)習(xí)。因此,會(huì)展開為和。獲取目錄下所有文件名長(zhǎng)度為字符的文件。匹配該路徑段中在指定范圍內(nèi)的一個(gè)字符。匹配完全且精確地匹配,且不可組合不符合任何模型之一的字符??赏ㄟ^(guò)在設(shè)置,讓將視為普通字符。 參考資料:https://github.com/isaacs/nod... 下文是關(guān)于 Gulp 的 gulp.src(globs[, options]) 方...

    ThreeWords 評(píng)論0 收藏0
  • Node.js 指南(關(guān)于Node.js

    摘要:如果不熟悉這種語(yǔ)言,有一篇關(guān)于阻塞與非阻塞的完整文章。在設(shè)計(jì)上與的或的等系統(tǒng)類似,并受其影響,進(jìn)一步采用事件模型。它將事件循環(huán)呈現(xiàn)為運(yùn)行時(shí)構(gòu)造而不是庫(kù),在其他系統(tǒng)中,始終存在阻塞調(diào)用以啟動(dòng)事件循環(huán)。上一篇指南目錄下一篇入門指南 關(guān)于Node.js 作為異步事件驅(qū)動(dòng)的JavaScript運(yùn)行時(shí),Node旨在構(gòu)建可伸縮的網(wǎng)絡(luò)應(yīng)用程序,在下面的hello world示例中,可以同時(shí)處理許多連...

    Java_oldboy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<