摘要:對象與數值比較時,對象轉為數值等同于對象與字符串比較時,對象轉為字符串等同于等同于對象與布爾值比較時,兩邊都轉為數值等同于等同于相等運算符的缺點相等運算符隱藏的類型轉換,會帶來一些違反直覺的結果。
1.概述
大于運算符
< 小于運算符
<= 小于或等于運算符
= 大于或等于運算符
== 相等運算符
=== 嚴格相等運算符
!= 不相等運算符
!== 嚴格不相等運算符
2.大小與運算符:字符串的比較 大小于號
3.大小與運算符:非字符串的比較
4.嚴格相等運算符 ===
5.嚴格不相等運算符
6.相等運算符==
7.不相等運算符
區別是相等運算符(==)比較兩個值是否相等,嚴格相等運算符(===)比較它們是否為“同一個值
概述
2.大小與運算符:字符串的比較 大小于號
字符串按照字典順序進行比較
3.大小與運算符:非字符串的比較
如果兩個運算子之中,至少有一個不是字符串,需要分成以下兩種情況
(1)原始類型值
先轉成數值再比較
5 > "4" // true
// 等同于 5 > Number("4")
// 即 5 > 4
true > false // true
// 等同于 Number(true) > Number(false)
// 即 1 > 0
2 > true // true
// 等同于 2 > Number(true)
// 即 2 > 1
任何值(包括NaN本身)與NaN比較,返回的都是false。
(2)對象
會轉為原始類型的值,再比
對象轉換成原始類型的值,算法是先調用valueOf方法;如果返回的還是對象,再接著調用toString方法
var x = [2];
x > "11" // true
// 等同于 [2].valueOf().toString() > "11"
// 即 "2" > "11"
x.valueOf = function () { return "1" };
x > "11" // false
// 等同于 [2].valueOf() > "11"
// 即 "1" > "11"
兩個對象之間的比較也是如此。
[2] > [1] // true
// 等同于 [2].valueOf().toString() > [1].valueOf().toString()
// 即 "2" > "1"
[2] > [11] // true
// 等同于 [2].valueOf().toString() > [11].valueOf().toString()
// 即 "2" > "11"
{ x: 2 } >= { x: 1 } // true
// 等同于 { x: 2 }.valueOf().toString() >= { x: 1 }.valueOf().toString()
// 即 "[object Object]" >= "[object Object]"
4.嚴格相等運算符 ===
如果兩個變量引用同一個對象,則它們相等。
var v1 = {};
var v2 = v1;
v1 === v2 // true
(4)undefined 和 null
undefined和null與自身嚴格相等。
undefined === undefined // true
null === null // true
由于變量聲明后默認值是undefined,因此兩個只聲明未賦值的變量是相等的。
5.嚴格不相等運算符
6.相等運算符==
(1)原始類型值
原始類型的值會轉換成數值
1 == true // true
// 等同于 1 === Number(true)
0 == false // true
// 等同于 0 === Number(false)
2 == true // false
// 等同于 2 === Number(true)
2 == false // false
// 等同于 2 === Number(false)
"true" == true // false
// 等同于 Number("true") === Number(true)
// 等同于 NaN === 1
"" == 0 // true
// 等同于 Number("") === 0
// 等同于 0 === 0
"" == false // true
// 等同于 Number("") === Number(false)
// 等同于 0 === 0
"1" == true // true
// 等同于 Number("1") === Number(true)
// 等同于 1 === 1
"n 123 t" == 123 // true
// 因為字符串轉為數字時,省略前置和后置的空格
(2)對象與原始類型值比較
對象(這里指廣義的對象,包括數組和函數)與原始類型的值比較時,對象轉換成原始類型的值,再進行比較。
// 對象與數值比較時,對象轉為數值
[1] == 1 // true
// 等同于 Number([1]) == 1
// 對象與字符串比較時,對象轉為字符串
[1] == "1" // true
// 等同于 String([1]) == "1"
[1, 2] == "1,2" // true
// 等同于 String([1, 2]) == "1,2"
// 對象與布爾值比較時,兩邊都轉為數值
[1] == true // true
// 等同于 Number([1]) == Number(true)
[2] == true // false
// 等同于 Number([2]) == Number(true)
undefined == null // true
(4)相等運算符的缺點
相等運算符隱藏的類型轉換,會帶來一些違反直覺的結果。
0 == "" // true
0 == "0" // true
2 == true // false
2 == false // false
false == "false" // false
false == "0" // true
false == undefined // false
false == null // false
null == undefined // true
" trn " == 0 // true
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106044.html
摘要:除法運算符總是返回浮點數。取模運算符的結果和被除數的符號正負號相同。使用位運算符時要特別注意優先級。太空船運算符組合比較符當小于等于大于時分別返回一個小于等于大于的值。遞增遞減運算符不影響布爾值。 一、算術運算符 1. 概覽 例子 名稱 結果 $a + $b 加法 $a 和 $b 的和。 $a - $b 減法 $a 和 $b 的差。 $a * $b 乘法 $a 和 ...
摘要:運算符運算符一共分為六種算數運算符比較運算符邏輯運算符賦值運算符字符串聯接運算符條件運算符運算符的概念提供的一組用于操作數據值的運算符操作符。這些運算符可以按照作用的不同或者操作變量數量的不同進行分類。 運算符 ——運算符一共分為六種;1.算數運算符2.比較運算符3.邏輯運算符4.賦值運算符5.字符串聯接運算符6.條件運算符——運算符的概念;JavaScript提供的一組用于操作數據值...
摘要:算術運算符中的算術操作主要通過算術運算符來實現,算術運算符包括一元算術運算符和二元算術運算符兩種。一元算術運算符一元算術運算符用于一個單獨的操作數,并產生一個新值。 算術運算符 javascript中的算術操作主要通過算術運算符來實現,算術運算符包括一元算術運算符和二元算術運算符兩種。 一元算術運算符 一元算術運算符用于一個單獨的操作數,并產生一個新值。在javascript中,一元運...
摘要:下面列出一個表格,將所有的運算符表現出來。比較運算符所謂比較,就是比一比兩個東西。由于其在符號邏輯運算中的特殊貢獻,很多計算機語言中將邏輯運算稱為布爾運算,將其結果稱為布爾值。布爾所創立的這套邏輯被稱之為布爾代數。 在計算機高級中語言,運算符是比較多樣化的。其實,也都源于我們日常的需要。 算術運算符 前面已經講過了四則運算,其中涉及到一些運算符:加減乘除,對應的符號分別是:+ -...
摘要:對于兩個數值相同的數字應該使用嚴格比較運算符,和任何值不相等,包括其自身,正數零等于負數零。對于和類型而言,應使用嚴格比較運算符比較其自身,使用比較運算符進行互相比較。 嚴格比較運算符 === 僅當兩個操作數的類型相同且值相等為 true,不做類型轉換,比較容易理解 類型轉換比較運算符 == 當比較數字和字符串時,字符串會轉換成數字值。 JavaScript 嘗試將數字字面量轉換為數...
閱讀 3559·2021-11-22 15:11
閱讀 4634·2021-11-18 13:15
閱讀 2702·2019-08-29 14:08
閱讀 3576·2019-08-26 13:49
閱讀 3091·2019-08-26 12:17
閱讀 3288·2019-08-26 11:54
閱讀 3111·2019-08-26 10:58
閱讀 2031·2019-08-26 10:21