當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
【前端工程师手册】说清楚JavaScript中的相等性判断
生活随笔
收集整理的這篇文章主要介紹了
【前端工程师手册】说清楚JavaScript中的相等性判断
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
有哪些判斷相等性的方法
JavaScript現(xiàn)在提供了三種方法來(lái)判斷相等性:
判斷相等性的細(xì)節(jié)
===(嚴(yán)格相等)
被比較的兩個(gè)數(shù)不會(huì)進(jìn)行類型轉(zhuǎn)換,具體的比較過(guò)程如下:
例子:
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 復(fù)制代碼==(寬松相等)
寬松相等主要是在某些情況下涉及到隱式類型轉(zhuǎn)換的問題,廢話不說(shuō),看一下MDN上面對(duì)寬松相等的規(guī)則總結(jié):
總結(jié)一下就是:那么ToNumber和ToPrimitive這兩個(gè)方法內(nèi)部到底是如何判斷的呢?查看一下ECMA說(shuō)明
如果是這么個(gè)意思:ToNumber
ToPrimitive
首先這個(gè)方法有兩個(gè)參數(shù),input和preferredType,如果preferredType是number的話,大致過(guò)程如下:
如果preferredType是string,那么第2步和第3步順序反過(guò)來(lái)。
如果preferredType沒有傳入的話:
- 如果input是Date類型,則preferredType取string
- 否則,preferredType取number
Object.is
這個(gè)方法大致和===一樣,除了以下:
參考
知乎-Javascript 中 == 和 === 區(qū)別是什么?
全面解析js中的數(shù)據(jù)類型與類型轉(zhuǎn)換
ECMA規(guī)范
總結(jié)
以上是生活随笔為你收集整理的【前端工程师手册】说清楚JavaScript中的相等性判断的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海量数据和高并发下的 Redis 业务优
- 下一篇: [react] 写个例子说明什么是JSX