摘要:可以理解為,它們其實都是表示沒有值沒有值的變量和沒有值的對象,因此認(rèn)為它們相等。使用運(yùn)算符時,也不必考慮各種復(fù)雜的規(guī)則拼接在使用號進(jìn)行拼接時,會先將數(shù)字轉(zhuǎn)換為字符串,再進(jìn)行拼接操作。
在將兩個類型不同的值進(jìn)行比較時,Js會自動將其中一個值轉(zhuǎn)換為另一個值的類型,再進(jìn)行比較
比較數(shù)字與字符串這種情況下,都會將字符串轉(zhuǎn)換為數(shù)字,再對兩個數(shù)字進(jìn)行比較
99 == "98" 99 == 98 false
但實際并非所有的字符串都能轉(zhuǎn)換為數(shù)字:
99 == "xiaoming" 99 == NaN//因為NaN不與任何東西相等 false比較布爾值與其他類型
這種情況下,都會將布爾值轉(zhuǎn)換為數(shù)字,再進(jìn)行比較,true會轉(zhuǎn)換為1,false會轉(zhuǎn)換為0。有些情況下,為了判斷需要做出多次轉(zhuǎn)換:
"1" == true "1" == 1 1 == 1 true比較null與undefined
undefined == null true
這兩個值的比較結(jié)果為true,看似有點奇怪,但是規(guī)則就是這樣。可以理解為,它們其實都是表示“沒有值”(沒有值的變量和沒有值的對象),因此認(rèn)為它們相等。
所以在Js中,在經(jīng)常做檢驗的場合中,其實沒有必要同時判斷null和undefined例外
上述三種情形已經(jīng)可以確定所有的請況,只是對于一些邊界情況需要額外注意。一個主要注意的是對象的比較,另一個需要注意的是某些特殊的情形
1 == "" 1 == 0//空字符串轉(zhuǎn)為數(shù)字的結(jié)果是0,可以自己測試一下 false附錄 ===運(yùn)算符
對于===運(yùn)算符,當(dāng)且僅當(dāng)兩個值的類型和值都相同時,結(jié)果才為true。
使用===運(yùn)算符時,也不必考慮各種復(fù)雜的規(guī)則
在使用+號進(jìn)行拼接時,Js會先將數(shù)字轉(zhuǎn)換為字符串,再進(jìn)行拼接操作。
1 + “str” “1str”
但必須注意的是,+號的結(jié)合性是從左到右的,所以1 + 2 + “str”的結(jié)果為3str,而1 + (2 + "str")的結(jié)果是12str
對于boolean類型,將它與字符串相加時,結(jié)果為字符串。true + " love"結(jié)果為true love。不過在編寫代碼時,應(yīng)當(dāng)避免這種代碼,以免給人帶來誤解其它算術(shù)運(yùn)算
對于其它算術(shù)運(yùn)算符,如乘法、除法和減法,Js將認(rèn)為你要執(zhí)行的是算術(shù)運(yùn)算,而不是字符串運(yùn)算3 * "4"會自動轉(zhuǎn)換為3 * 4
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/107023.html
摘要:短路運(yùn)算返回值是什么又稱為短路或,短路如果左側(cè)為真,則不再進(jìn)行右側(cè)運(yùn)算,同時返回左側(cè)表達(dá)式運(yùn)算結(jié)果。上面是不存在的,所有結(jié)果為,轉(zhuǎn)成就是,那么就會運(yùn)算,把賦值給的同時,返回值也是,所以打印返回結(jié)果是函數(shù)內(nèi)部變量有哪些 DOM元素e的e.getAttribute(propName)和e.propName有什么區(qū)別和聯(lián)系 e.getAttribute(),是標(biāo)準(zhǔn)DOM操作文檔元素屬性的方...
摘要:函數(shù)定義表達(dá)式。對象創(chuàng)建表達(dá)式。需要注意的是,大多數(shù)運(yùn)算符都是由標(biāo)點符號表示的,比如和。也就是說,空字符串將被當(dāng)作,布爾值將被當(dāng)作。對于和,則分別調(diào)用函數(shù)并取得字符串和。 表達(dá)式 表達(dá)式是由數(shù)字、運(yùn)算符、數(shù)字分組符號(如括號)、自由變量和約束變量等以能求得數(shù)值的有意義排列方法所得的組合。JavaScript 表達(dá)式主要有以下幾種形式: 原始表達(dá)式:常量、變量、保留字。 對象、數(shù)組初始...
摘要:在比較字符串?dāng)?shù)值和布爾值的相等性時,問題還比較簡單。但在涉及到對象的比較時,問題就變得復(fù)雜了。和是相等的要比較相等性之前,不能將和轉(zhuǎn)換成其他任何值如果有一個操作數(shù)是,則相等操作符返回,而不相等操作符返回。 console.log( [] == ![] ) // true console.log( {} == !{} ) // false 在比較字符串、數(shù)值和布爾值的相等性時,問題還...
摘要:雖然你可能很驚訝甚至可能懷疑是的但是這都是有語言自己的一個隱式類型轉(zhuǎn)換的套路。基本的隱式類型轉(zhuǎn)換基本類型的隱式轉(zhuǎn)換這個其實我們使用的最多例如結(jié)果返回的是而不是這就是類型的隱式轉(zhuǎn)換。 基本上所有的語言都有 隱式類型轉(zhuǎn)換 ,但是對于 弱類型語言(JS) 來說 ,隱式類型轉(zhuǎn)換會比 強(qiáng)類型語言(Java) 帶來更大的副作用,有些行為甚至是不可思議的。雖然你可能很驚訝 ,甚至可能懷疑是 JS 的...
閱讀 3431·2021-10-14 09:42
閱讀 2718·2021-09-08 10:44
閱讀 1300·2021-09-02 10:18
閱讀 3600·2021-08-30 09:43
閱讀 2794·2021-07-29 13:49
閱讀 3719·2019-08-29 17:02
閱讀 1576·2019-08-29 15:09
閱讀 1035·2019-08-29 11:01