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

資訊專(zhuān)欄INFORMATION COLUMN

【JavaScript 類(lèi)型比較】為什么空對(duì)象不==true?

gghyoo / 1767人閱讀

摘要:預(yù)備知識(shí)非嚴(yán)格比較操作符是會(huì)做強(qiáng)制類(lèi)型轉(zhuǎn)換的,其規(guī)則是會(huì)根據(jù)這些規(guī)則,將兩邊強(qiáng)制轉(zhuǎn)換成相同類(lèi)型,才進(jìn)行比較。

【JavaScript 類(lèi)型比較】為什么空對(duì)象不==true? 背景

Boolean()函數(shù)為強(qiáng)制轉(zhuǎn)換為布爾類(lèi)型的函數(shù),其轉(zhuǎn)換規(guī)則如下:

問(wèn)題

為什么表達(dá)式[]==true =>false, 表達(dá)式{}==true =>false,按照ToBoolean的規(guī)則,這兩個(gè)表達(dá)式不應(yīng)該都是真true嗎?

示例

解決

其實(shí)當(dāng)用試圖用Boolean()強(qiáng)制轉(zhuǎn)化==兩邊為布爾類(lèi)型再進(jìn)行比較時(shí),方向已經(jīng)錯(cuò)了,==強(qiáng)制轉(zhuǎn)換的方式和if(expresssion)中if括號(hào)里的強(qiáng)制轉(zhuǎn)換是不一樣的。
預(yù)備知識(shí):非嚴(yán)格比較操作符==是會(huì)做強(qiáng)制類(lèi)型轉(zhuǎn)換的,其規(guī)則是:

==會(huì)根據(jù)這些規(guī)則,將兩邊強(qiáng)制轉(zhuǎn)換成相同類(lèi)型,才進(jìn)行比較。
其中第7、9條:

7.If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).
9.If Type(x) is Object and Type(y) is either String, Number, or Symbol, return the result of the comparison ToPrimitive(x) == y.

大意是:若==兩邊類(lèi)型不一致,布爾值的會(huì)使用Number()強(qiáng)制轉(zhuǎn)換為數(shù)值型,對(duì)象類(lèi)型會(huì)使用ToPrimitive規(guī)則進(jìn)行轉(zhuǎn)換,ToPrimitive規(guī)則如下:

根據(jù)這些規(guī)則,
對(duì)于表達(dá)式[]==true:實(shí)際上等價(jià)于ToPrimitive([]) == ToNumber(true),即Number([].toString()) == Number(true)

對(duì)于表達(dá)式{}==true:實(shí)際上等價(jià)于ToPrimitive({}) == ToNumber(true),即Number({}.toString()) == Number(true)

因?yàn)镹aN為非數(shù)值,因?yàn)椴豢赡艿扔?或1,所以不管是表達(dá)式{}==true還是表達(dá)式{}==false,結(jié)果都為false

總結(jié)
對(duì)于==,如果兩邊類(lèi)型相同(引用類(lèi)型除外),則直接比較值是否相同;如果兩邊類(lèi)型不一致,就把兩邊都變成Number類(lèi)型,然后再比較。

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

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

相關(guān)文章

  • Javascript 隱式轉(zhuǎn)換

    摘要:在比較字符串?dāng)?shù)值和布爾值的相等性時(shí),問(wèn)題還比較簡(jiǎn)單。后來(lái),有人提出了這種轉(zhuǎn)換到底是否合理的質(zhì)疑。相等時(shí)的隱式轉(zhuǎn)換對(duì)于操作符,通常都會(huì)先隱式轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換,然后再比較它們的相等性。要比較相等性之前,不能將和轉(zhuǎn)換成其他任何值。 確定兩個(gè)變量是否相等是編程中的一個(gè)非常重要的操作。 在比較字符串、數(shù)值和布爾值的相等性時(shí),問(wèn)題還比較簡(jiǎn)單。但在涉及到對(duì)象的比較時(shí),問(wèn)題就變得復(fù)雜了。最早的 ECMAS...

    AnthonyHan 評(píng)論0 收藏0
  • JavaScript的相等比較(==)和(===)及Object.is()的區(qū)別

    摘要:原始類(lèi)型值比較原始類(lèi)型值有五種布爾值字符串?dāng)?shù)值。用來(lái)比較兩個(gè)值是否嚴(yán)格相等,與嚴(yán)格比較運(yùn)算符的行為基本一致。返回布爾值,相等返回,不相等返回。 比較運(yùn)算符之相等運(yùn)算符 ES5 比較兩個(gè)值是否相等,只有兩個(gè)運(yùn)算符:相等運(yùn)算符(==)和嚴(yán)格相等運(yùn)算符(===)。前者在比較時(shí)對(duì)于不同數(shù)據(jù)類(lèi)型的值會(huì)進(jìn)行類(lèi)型轉(zhuǎn)換;而后者不會(huì)轉(zhuǎn)換,且結(jié)果更容易預(yù)測(cè),并且因?yàn)闆](méi)有隱式轉(zhuǎn)換,全等比較的運(yùn)行會(huì)更快。因此...

    王軍 評(píng)論0 收藏0
  • JavaScript系列--類(lèi)型判斷的4種基本方法,研究jquery的type方法,對(duì)象的檢測(cè)方法

    摘要:用對(duì)象字面量創(chuàng)建的對(duì)象會(huì)報(bào)錯(cuò),使用構(gòu)造函數(shù)創(chuàng)建的對(duì)象屬于。發(fā)現(xiàn),構(gòu)造函數(shù)創(chuàng)建的,,,,。從原型鏈角度講,構(gòu)造函數(shù)就是新對(duì)象的的類(lèi)型。 一、前言 類(lèi)型判斷有時(shí)候真的頭疼,但是一旦熟練使用就會(huì)覺(jué)得不過(guò)如此。初級(jí)的,會(huì)判斷數(shù)字和字符串。中級(jí)的,會(huì)判斷數(shù)組和對(duì)象。進(jìn)階的,會(huì)判斷日期,正則,錯(cuò)誤類(lèi)型。高級(jí)的,會(huì)判斷plainObject,空對(duì)象,window對(duì)象等等。 基本類(lèi)型:String、N...

    lavor 評(píng)論0 收藏0
  • JavaScript系列】類(lèi)型判斷的4種基本方法,研究jquery的type方法,對(duì)象的檢測(cè)方法

    摘要:用對(duì)象字面量創(chuàng)建的對(duì)象會(huì)報(bào)錯(cuò),使用構(gòu)造函數(shù)創(chuàng)建的對(duì)象屬于。發(fā)現(xiàn),構(gòu)造函數(shù)創(chuàng)建的,,,,。從原型鏈角度講,構(gòu)造函數(shù)就是新對(duì)象的的類(lèi)型。 一、前言 類(lèi)型判斷有時(shí)候真的頭疼,但是一旦熟練使用就會(huì)覺(jué)得不過(guò)如此。初級(jí)的,會(huì)判斷數(shù)字和字符串。中級(jí)的,會(huì)判斷數(shù)組和對(duì)象。進(jìn)階的,會(huì)判斷日期,正則,錯(cuò)誤類(lèi)型。高級(jí)的,會(huì)判斷plainObject,空對(duì)象,window對(duì)象等等。 基本類(lèi)型:String、N...

    xiongzenghui 評(píng)論0 收藏0
  • 從[]==![]為true來(lái)剖析JavaScript各種蛋疼的類(lèi)型轉(zhuǎn)換

    摘要:將他們放在堆中是為了不影響棧的效率。所以簡(jiǎn)單數(shù)據(jù)類(lèi)型的值直接存放在棧中??梢詫?duì)比上面那張圖默認(rèn)是調(diào)用方法的依,于是等于空字符串。空字符串中國(guó)標(biāo)準(zhǔn)時(shí)間方法返回對(duì)象的原始值,可能是字符串?dāng)?shù)值或值等,看具體的對(duì)象。,需要兩個(gè)操作數(shù)同時(shí)轉(zhuǎn)為。 你是否在面試中遇到過(guò)各種奇葩和比較細(xì)節(jié)的問(wèn)題? []==[] //false []==![] //true {}==!{} //false {}==![...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<