摘要:比較和是值變量返回或者這樣的比較判斷遵循以下規(guī)律如果和的類型一致僅包括。因此,僅根據(jù)標準規(guī)范,字符串值即可推測為不相等比如不會比較全角和半角的編碼差異。實際上這個算法推測兩端的字符串都已經(jīng)是普通樣式。
比較 x == y, x 和 y 是值變量,返回 true 或者 false.這樣的比較判斷遵循以下規(guī)律:
如果 x 和 y 的類型一致(僅包括Number,String,Null,Undefined,Boolean,Object。Symbol屬于ES6)如果 x 的類型是 Underfined,返回 true.
如果 x 的類型是 Null,返回 true.
如果 x 的類型是 Number,那么:
如果 x 是 NaN,那么返回 false.
如果 y 是 NaN,那么返回 false.
如果 x 和 y 的值相等,那么返回 true.
如果 x 是 +0 且 y 的值是 -0,返回 true.
如果 x 是 -0 且 y 的值是 +0,返回 true.
其他情況返回 false.
如果 x 的類型是 String,那么除非 x 和 y 的字符順序完全相同,且長度相等。否則返回 flase.
如果 x 的類型是 Boolean,如果 x 和 y 都是 true 或 false.否則返回 flase.
如果 x 和 y 引用自相同 Object,返回 true.
如果 x 為 null 且 y 為 underfined,返回 true. 如果 x 為 underfined 且 y 為 null,返回 true. 如果 x 的類型為 Number 且 y 的類型為 String,返回的結(jié)果為 x == ToNumber(y). 如果 x 的類型為 String 且 y 的類型為 Number,返回的結(jié)果為 ToNumber(x) == y. 如果 x 的類型為 Boolean,返回的結(jié)果為 ToNumber(x) == y. 如果 y 的類型為 Boolean,返回的結(jié)果為 x == ToNumber(y). 如果 x 的類型為 String 或者 Number 且 y 的類型是 Object,返回的結(jié)果是 x == ToPrimitive(y). 如果 x 的類型為 Object 且 y 的類型是 String 或者 Number,返回的結(jié)果是 ToPrimitive(x) == y. 除以上情況,全部返回 false. TIPS
以下類型轉(zhuǎn)換規(guī)則
字符串類型比較可以是: "" + a == "" + b
數(shù)字類型比較可以是: +a == +b
布爾類型比較可以是: !a == !b
以下操作等式結(jié)果不變
!= B 的結(jié)果與 !(A==B) 相同
== B 的結(jié)果與 B == A 相同,除了對A和B的判定順序有區(qū)別以外其他等同
等式操作的傳遞性并不總是正確的.比如,存在兩個含有相同字符的字符串對象;每一個字符串對象都可以被認為等同于該字符,但兩個字符串對象并不相等:
new String("a") == "a" 與 "a" == new String("a") 結(jié)果都為 true.
new String("a") == new String("a") 的結(jié)果卻是 false.
字符串的比較僅僅是簡單的順序比較每個字符的值。并沒有嘗試使用更加復(fù)雜的,以語義為導(dǎo)向的字符定義或是字符串同性測試或是整理 Unicode 碼的定義順序。因此,僅根據(jù)Unicode標準規(guī)范,字符串值即可推測為不相等(比如不會比較全角和半角的編碼差異)。實際上這個算法推測兩端的字符串都已經(jīng)是普通樣式。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/90309.html
摘要:創(chuàng)建對象的兩種方式推薦該構(gòu)造器可以接受任何類型的參數(shù),并且會自動識別參數(shù)的類型,并選擇更合適的構(gòu)造器來完成相關(guān)操作。比如二的成員該屬性指向用來構(gòu)造該函數(shù)對象的構(gòu)造器,在這里為該方法返回的是一個用于描述目標對象的字符串。 之前看到【深度長文】JavaScript數(shù)組所有API全解密和JavaScript字符串所有API全解密這兩篇高質(zhì)量的文章。發(fā)現(xiàn)沒寫對象API解析(估計是博主覺得簡單,...
摘要:在有了基礎(chǔ)之后,進一步學(xué)習(xí)內(nèi)容包括框架。前端學(xué)習(xí)交流群禁止閑聊,非喜勿進。代碼提交前必須做的三個事情檢查所有變更跑一邊單元測試手動運行一遍所有 網(wǎng)站開發(fā)開發(fā)大致分為前端和后端,前端主要負責(zé)實現(xiàn)視覺和交互效果,以及與服務(wù)器通信,完成業(yè)務(wù)邏輯。其核心價值在于對用戶體驗的追求??梢园慈缦滤悸穼W(xué)習(xí)系統(tǒng)學(xué)習(xí): 基礎(chǔ)知識: html + css 這部分建議在?w3school 在線教程上學(xué)習(xí),邊...
摘要:在有了基礎(chǔ)之后,進一步學(xué)習(xí)內(nèi)容包括框架。前端學(xué)習(xí)交流群禁止閑聊,非喜勿進。代碼提交前必須做的三個事情檢查所有變更跑一邊單元測試手動運行一遍所有 網(wǎng)站開發(fā)開發(fā)大致分為前端和后端,前端主要負責(zé)實現(xiàn)視覺和交互效果,以及與服務(wù)器通信,完成業(yè)務(wù)邏輯。其核心價值在于對用戶體驗的追求。可以按如下思路學(xué)習(xí)系統(tǒng)學(xué)習(xí): 基礎(chǔ)知識: html + css 這部分建議在?w3school 在線教程上學(xué)習(xí),邊...
摘要:字段由腳本命令組成的字典,這些命令運行在包的各個生命周期中。在打包過程中,如果遇到字段會優(yōu)先使用字段表示的路徑下的文件,如果不存在,則用字段表示的作為入口,并按照的規(guī)范打包。其中還分析了文件中字段和字段的不同以及和兩個字段的區(qū)別。 所有用npm下載的包或者要上傳至npm的模塊都會有一個package.json文件,這個文件總是存在于模塊(或者包)的根目錄下,這個文件到底是干嘛的,現(xiàn)在就...
摘要:結(jié)論對于中所說的變量聲明提前,更準確的說法是變量定義聲明提前了,更準確的理解是定義聲明處于程序運行的第一個階段導(dǎo)致相較于賦值聲明的第二階段有了前提的效果。 ES5和ES6中的變量聲明提升 Example1: a=2; var a; console.log( a ); //結(jié)果為2 Example2: console.log( a ); //結(jié)果是undefined var a=...
閱讀 1505·2021-11-17 09:33
閱讀 1269·2021-10-11 10:59
閱讀 2902·2021-09-30 09:48
閱讀 1912·2021-09-30 09:47
閱讀 3035·2019-08-30 15:55
閱讀 2347·2019-08-30 15:54
閱讀 1500·2019-08-29 15:25
閱讀 1655·2019-08-29 10:57