成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【前端工程師手冊】說清楚JavaScript中的相等性判斷

crossoverJie / 2300人閱讀

摘要:如果沒有傳入的話如果是類型,則取否則,取這個方法大致和一樣,除了以下返回返回參考知乎中和區(qū)別是什么全面解析中的數(shù)據(jù)類型與類型轉(zhuǎn)換規(guī)范

有哪些判斷相等性的方法

JavaScript現(xiàn)在提供了三種方法來判斷相等性:

===,三個等號即嚴(yán)格相等

==,兩個等號即寬松相等

Object.is(),ES6中用來判斷相等的方法

判斷相等性的細(xì)節(jié) ===(嚴(yán)格相等)

被比較的兩個數(shù)不會進(jìn)行類型轉(zhuǎn)換,具體的比較過程如下:

不同類型的值:直接返回false

同一類型的基本類型的值:比較值是否相同,相同就返回true,不相同就返回false,有一個例外NaN === NaN返回false

同一類的復(fù)合類型的值:比較它們是否指向同一個對象,是就返回true,否則返回false

例子:

var a = 2, b = "2"
a === b // false
undefined === null // false
NaN === NaN // false
+0 === -0 // true
var f = function(){}
var c = f, d = f;
c === d // true
==(寬松相等)

寬松相等主要是在某些情況下涉及到隱式類型轉(zhuǎn)換的問題,廢話不說,看一下MDN上面對寬松相等的規(guī)則總結(jié):


總結(jié)一下就是:

類型相同時,結(jié)果和===一樣

undefined和null互相比較時為true,但是它們和其他類型比較時都為false

原始類型A和原始類型B比較時:ToNumber(A) === ToNumber(B)

原始類型A和復(fù)合類型B比較時:ToNumber(A) == ToPrimitive(B)

那么ToNumber和ToPrimitive這兩個方法內(nèi)部到底是如何判斷的呢?查看一下ECMA說明



如果是這么個意思:

ToNumber

undefined,返回NaN

null,返回+0

boolean,true返回1,false返回+0

number,直接返回自身

string,將字符串的內(nèi)容轉(zhuǎn)換為數(shù)字,轉(zhuǎn)換失敗則返回NaN。例如"123"這樣的就是返回123,"213a"這樣的返回NaN

symbol,拋出typeerror錯誤

object,先調(diào)用toPrimitive,再對其結(jié)果調(diào)用toNumber

ToPrimitive

首先這個方法有兩個參數(shù),input和preferredType,如果preferredType是number的話,大致過程如下:

如果input就是原始類型,直接返回其自身

調(diào)用input.valueOf(),如果結(jié)果是原始類型,則返回該結(jié)果

調(diào)用input.toString(),如果結(jié)果是原始類型,則返回該結(jié)果

拋出typeerror錯誤

如果preferredType是string,那么第2步和第3步順序反過來。

如果preferredType沒有傳入的話:

如果input是Date類型,則preferredType取string

否則,preferredType取number

Object.is

這個方法大致和===一樣,除了以下:

Object.is(NaN, NaN) 返回true

Object.is(+0, -0) 返回false

參考

知乎-Javascript 中 == 和 === 區(qū)別是什么?

全面解析js中的數(shù)據(jù)類型與類型轉(zhuǎn)換

ECMA規(guī)范

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/96474.html

相關(guān)文章

  • 最最最常見的Java基礎(chǔ)知識面試題總結(jié)

    摘要:地址面試必備最最最常見的面試題總結(jié)第一周一中的值傳遞和引用傳遞非常重要首先要明確的是對象傳遞數(shù)組類接口是引用傳遞,原始類型數(shù)據(jù)整型浮點(diǎn)型字符型布爾型傳遞是值傳遞。這個哈希碼的作用是確定該對象在哈希表中的索引位置。 showImg(https://segmentfault.com/img/remote/1460000015923339?w=922&h=519); 這里會分享一些出現(xiàn)頻率極...

    syoya 評論0 收藏0
  • 前端每周清單第 51 期: React Context API 與模式變遷, Webpack 與 W

    摘要:前端每周清單第期與模式變遷與優(yōu)化界面生成作者王下邀月熊編輯徐川前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開發(fā)教程工程實(shí)踐深度閱讀開源項(xiàng)目巔峰人生等欄目。 showImg(https://segmentfault.com/img/remote/1460000013279448); 前端每周清單第 51 期: React Context A...

    Jiavan 評論0 收藏0
  • 前端開發(fā)者手冊2019

    摘要:年,和前端開發(fā)者與應(yīng)用程序前端開發(fā)者之間產(chǎn)生了巨大的分歧。開發(fā)最常見的解決方案有手機(jī)和平板的原生應(yīng)用程序桌面應(yīng)用程序桌面應(yīng)用程序原生技術(shù)最后,前端開發(fā)者可以從瀏覽器開發(fā)中學(xué)習(xí)到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發(fā)者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現(xiàn)代化的前端工程課程來提高你的技能。 下載:PDF ...

    church 評論0 收藏0
  • 前端開發(fā)者手冊2019

    摘要:年,和前端開發(fā)者與應(yīng)用程序前端開發(fā)者之間產(chǎn)生了巨大的分歧。開發(fā)最常見的解決方案有手機(jī)和平板的原生應(yīng)用程序桌面應(yīng)用程序桌面應(yīng)用程序原生技術(shù)最后,前端開發(fā)者可以從瀏覽器開發(fā)中學(xué)習(xí)到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發(fā)者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現(xiàn)代化的前端工程課程來提高你的技能。 下載:PDF ...

    xiao7cn 評論0 收藏0
  • 前端開發(fā)者手冊2019

    摘要:年,和前端開發(fā)者與應(yīng)用程序前端開發(fā)者之間產(chǎn)生了巨大的分歧。開發(fā)最常見的解決方案有手機(jī)和平板的原生應(yīng)用程序桌面應(yīng)用程序桌面應(yīng)用程序原生技術(shù)最后,前端開發(fā)者可以從瀏覽器開發(fā)中學(xué)習(xí)到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發(fā)者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現(xiàn)代化的前端工程課程來提高你的技能。 下載:PDF ...

    鄒立鵬 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<