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