摘要:如果沒有傳入的話如果是類型,則取否則,取這個方法大致和一樣,除了以下返回返回參考知乎中和區別是什么全面解析中的數據類型與類型轉換規范
有哪些判斷相等性的方法
JavaScript現在提供了三種方法來判斷相等性:
===,三個等號即嚴格相等
==,兩個等號即寬松相等
Object.is(),ES6中用來判斷相等的方法
判斷相等性的細節 ===(嚴格相等)被比較的兩個數不會進行類型轉換,具體的比較過程如下:
不同類型的值:直接返回false
同一類型的基本類型的值:比較值是否相同,相同就返回true,不相同就返回false,有一個例外NaN === NaN返回false
同一類的復合類型的值:比較它們是否指向同一個對象,是就返回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==(寬松相等)
寬松相等主要是在某些情況下涉及到隱式類型轉換的問題,廢話不說,看一下MDN上面對寬松相等的規則總結:
總結一下就是:
類型相同時,結果和===一樣
undefined和null互相比較時為true,但是它們和其他類型比較時都為false
原始類型A和原始類型B比較時:ToNumber(A) === ToNumber(B)
原始類型A和復合類型B比較時:ToNumber(A) == ToPrimitive(B)
那么ToNumber和ToPrimitive這兩個方法內部到底是如何判斷的呢?查看一下ECMA說明
如果是這么個意思:
undefined,返回NaN
null,返回+0
boolean,true返回1,false返回+0
number,直接返回自身
string,將字符串的內容轉換為數字,轉換失敗則返回NaN。例如"123"這樣的就是返回123,"213a"這樣的返回NaN
symbol,拋出typeerror錯誤
object,先調用toPrimitive,再對其結果調用toNumber
ToPrimitive首先這個方法有兩個參數,input和preferredType,如果preferredType是number的話,大致過程如下:
如果input就是原始類型,直接返回其自身
調用input.valueOf(),如果結果是原始類型,則返回該結果
調用input.toString(),如果結果是原始類型,則返回該結果
拋出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 中 == 和 === 區別是什么?
全面解析js中的數據類型與類型轉換
ECMA規范
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/96474.html
摘要:地址面試必備最最最常見的面試題總結第一周一中的值傳遞和引用傳遞非常重要首先要明確的是對象傳遞數組類接口是引用傳遞,原始類型數據整型浮點型字符型布爾型傳遞是值傳遞。這個哈希碼的作用是確定該對象在哈希表中的索引位置。 showImg(https://segmentfault.com/img/remote/1460000015923339?w=922&h=519); 這里會分享一些出現頻率極...
摘要:前端每周清單第期與模式變遷與優化界面生成作者王下邀月熊編輯徐川前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。 showImg(https://segmentfault.com/img/remote/1460000013279448); 前端每周清單第 51 期: React Context A...
摘要:年,和前端開發者與應用程序前端開發者之間產生了巨大的分歧。開發最常見的解決方案有手機和平板的原生應用程序桌面應用程序桌面應用程序原生技術最后,前端開發者可以從瀏覽器開發中學習到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現代化的前端工程課程來提高你的技能。 下載:PDF ...
摘要:年,和前端開發者與應用程序前端開發者之間產生了巨大的分歧。開發最常見的解決方案有手機和平板的原生應用程序桌面應用程序桌面應用程序原生技術最后,前端開發者可以從瀏覽器開發中學習到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現代化的前端工程課程來提高你的技能。 下載:PDF ...
摘要:年,和前端開發者與應用程序前端開發者之間產生了巨大的分歧。開發最常見的解決方案有手機和平板的原生應用程序桌面應用程序桌面應用程序原生技術最后,前端開發者可以從瀏覽器開發中學習到,編寫代碼不需要考慮瀏覽器引擎的限制。 前端開發者手冊2019 Cody Lindley 編著 原文地址 本手冊由Frontend Masters贊助,通過深入現代化的前端工程課程來提高你的技能。 下載:PDF ...
閱讀 859·2021-11-25 09:43
閱讀 3691·2021-11-19 09:40
閱讀 896·2021-09-29 09:34
閱讀 1810·2021-09-26 10:21
閱讀 885·2021-09-22 15:24
閱讀 4207·2021-09-22 15:08
閱讀 3283·2021-09-07 09:58
閱讀 2706·2019-08-30 15:55