摘要:對(duì)象與數(shù)值比較時(shí),對(duì)象轉(zhuǎn)為數(shù)值等同于對(duì)象與字符串比較時(shí),對(duì)象轉(zhuǎn)為字符串等同于等同于對(duì)象與布爾值比較時(shí),兩邊都轉(zhuǎn)為數(shù)值等同于等同于相等運(yùn)算符的缺點(diǎn)相等運(yùn)算符隱藏的類型轉(zhuǎn)換,會(huì)帶來(lái)一些違反直覺(jué)的結(jié)果。
1.概述
大于運(yùn)算符
< 小于運(yùn)算符
<= 小于或等于運(yùn)算符
= 大于或等于運(yùn)算符
== 相等運(yùn)算符
=== 嚴(yán)格相等運(yùn)算符
!= 不相等運(yùn)算符
!== 嚴(yán)格不相等運(yùn)算符
2.大小與運(yùn)算符:字符串的比較 大小于號(hào)
3.大小與運(yùn)算符:非字符串的比較
4.嚴(yán)格相等運(yùn)算符 ===
5.嚴(yán)格不相等運(yùn)算符
6.相等運(yùn)算符==
7.不相等運(yùn)算符
區(qū)別是相等運(yùn)算符(==)比較兩個(gè)值是否相等,嚴(yán)格相等運(yùn)算符(===)比較它們是否為“同一個(gè)值
概述
2.大小與運(yùn)算符:字符串的比較 大小于號(hào)
字符串按照字典順序進(jìn)行比較
3.大小與運(yùn)算符:非字符串的比較
如果兩個(gè)運(yùn)算子之中,至少有一個(gè)不是字符串,需要分成以下兩種情況
(1)原始類型值
先轉(zhuǎn)成數(shù)值再比較
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)對(duì)象
會(huì)轉(zhuǎn)為原始類型的值,再比
對(duì)象轉(zhuǎn)換成原始類型的值,算法是先調(diào)用valueOf方法;如果返回的還是對(duì)象,再接著調(diào)用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"
兩個(gè)對(duì)象之間的比較也是如此。
[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.嚴(yán)格相等運(yùn)算符 ===
如果兩個(gè)變量引用同一個(gè)對(duì)象,則它們相等。
var v1 = {};
var v2 = v1;
v1 === v2 // true
(4)undefined 和 null
undefined和null與自身嚴(yán)格相等。
undefined === undefined // true
null === null // true
由于變量聲明后默認(rèn)值是undefined,因此兩個(gè)只聲明未賦值的變量是相等的。
5.嚴(yán)格不相等運(yùn)算符
6.相等運(yùn)算符==
(1)原始類型值
原始類型的值會(huì)轉(zhuǎn)換成數(shù)值
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
// 因?yàn)樽址D(zhuǎn)為數(shù)字時(shí),省略前置和后置的空格
(2)對(duì)象與原始類型值比較
對(duì)象(這里指廣義的對(duì)象,包括數(shù)組和函數(shù))與原始類型的值比較時(shí),對(duì)象轉(zhuǎn)換成原始類型的值,再進(jìn)行比較。
// 對(duì)象與數(shù)值比較時(shí),對(duì)象轉(zhuǎn)為數(shù)值
[1] == 1 // true
// 等同于 Number([1]) == 1
// 對(duì)象與字符串比較時(shí),對(duì)象轉(zhuǎn)為字符串
[1] == "1" // true
// 等同于 String([1]) == "1"
[1, 2] == "1,2" // true
// 等同于 String([1, 2]) == "1,2"
// 對(duì)象與布爾值比較時(shí),兩邊都轉(zhuǎn)為數(shù)值
[1] == true // true
// 等同于 Number([1]) == Number(true)
[2] == true // false
// 等同于 Number([2]) == Number(true)
undefined == null // true
(4)相等運(yùn)算符的缺點(diǎn)
相等運(yùn)算符隱藏的類型轉(zhuǎn)換,會(huì)帶來(lái)一些違反直覺(jué)的結(jié)果。
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
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/106044.html
摘要:除法運(yùn)算符總是返回浮點(diǎn)數(shù)。取模運(yùn)算符的結(jié)果和被除數(shù)的符號(hào)正負(fù)號(hào)相同。使用位運(yùn)算符時(shí)要特別注意優(yōu)先級(jí)。太空船運(yùn)算符組合比較符當(dāng)小于等于大于時(shí)分別返回一個(gè)小于等于大于的值。遞增遞減運(yùn)算符不影響布爾值。 一、算術(shù)運(yùn)算符 1. 概覽 例子 名稱 結(jié)果 $a + $b 加法 $a 和 $b 的和。 $a - $b 減法 $a 和 $b 的差。 $a * $b 乘法 $a 和 ...
摘要:運(yùn)算符運(yùn)算符一共分為六種算數(shù)運(yùn)算符比較運(yùn)算符邏輯運(yùn)算符賦值運(yùn)算符字符串聯(lián)接運(yùn)算符條件運(yùn)算符運(yùn)算符的概念提供的一組用于操作數(shù)據(jù)值的運(yùn)算符操作符。這些運(yùn)算符可以按照作用的不同或者操作變量數(shù)量的不同進(jìn)行分類。 運(yùn)算符 ——運(yùn)算符一共分為六種;1.算數(shù)運(yùn)算符2.比較運(yùn)算符3.邏輯運(yùn)算符4.賦值運(yùn)算符5.字符串聯(lián)接運(yùn)算符6.條件運(yùn)算符——運(yùn)算符的概念;JavaScript提供的一組用于操作數(shù)據(jù)值...
摘要:算術(shù)運(yùn)算符中的算術(shù)操作主要通過(guò)算術(shù)運(yùn)算符來(lái)實(shí)現(xiàn),算術(shù)運(yùn)算符包括一元算術(shù)運(yùn)算符和二元算術(shù)運(yùn)算符兩種。一元算術(shù)運(yùn)算符一元算術(shù)運(yùn)算符用于一個(gè)單獨(dú)的操作數(shù),并產(chǎn)生一個(gè)新值。 算術(shù)運(yùn)算符 javascript中的算術(shù)操作主要通過(guò)算術(shù)運(yùn)算符來(lái)實(shí)現(xiàn),算術(shù)運(yùn)算符包括一元算術(shù)運(yùn)算符和二元算術(shù)運(yùn)算符兩種。 一元算術(shù)運(yùn)算符 一元算術(shù)運(yùn)算符用于一個(gè)單獨(dú)的操作數(shù),并產(chǎn)生一個(gè)新值。在javascript中,一元運(yùn)...
摘要:跳過(guò)第二個(gè)運(yùn)算子的機(jī)制,被稱為短路有些程序員喜歡用它取代結(jié)構(gòu)等價(jià)于運(yùn)算符可以多個(gè)連用返回第一個(gè)布爾值為的表達(dá)式的值。 一、運(yùn)算符概述 1、定義 JavaScript中運(yùn)算符主要用于連接簡(jiǎn)單表達(dá)式,組成一個(gè)復(fù)雜的表達(dá)式 2、運(yùn)算符類別 算數(shù)運(yùn)算符 賦值表達(dá)式 比較表達(dá)式 布爾運(yùn)算符 位運(yùn)算符 二、算數(shù)運(yùn)算符 1、加法運(yùn)算符(Addition):x + y 加法運(yùn)算符是在運(yùn)行時(shí)決定,到...
摘要:下面列出一個(gè)表格,將所有的運(yùn)算符表現(xiàn)出來(lái)。比較運(yùn)算符所謂比較,就是比一比兩個(gè)東西。由于其在符號(hào)邏輯運(yùn)算中的特殊貢獻(xiàn),很多計(jì)算機(jī)語(yǔ)言中將邏輯運(yùn)算稱為布爾運(yùn)算,將其結(jié)果稱為布爾值。布爾所創(chuàng)立的這套邏輯被稱之為布爾代數(shù)。 在計(jì)算機(jī)高級(jí)中語(yǔ)言,運(yùn)算符是比較多樣化的。其實(shí),也都源于我們?nèi)粘5男枰? 算術(shù)運(yùn)算符 前面已經(jīng)講過(guò)了四則運(yùn)算,其中涉及到一些運(yùn)算符:加減乘除,對(duì)應(yīng)的符號(hào)分別是:+ -...
摘要:對(duì)于兩個(gè)數(shù)值相同的數(shù)字應(yīng)該使用嚴(yán)格比較運(yùn)算符,和任何值不相等,包括其自身,正數(shù)零等于負(fù)數(shù)零。對(duì)于和類型而言,應(yīng)使用嚴(yán)格比較運(yùn)算符比較其自身,使用比較運(yùn)算符進(jìn)行互相比較。 嚴(yán)格比較運(yùn)算符 === 僅當(dāng)兩個(gè)操作數(shù)的類型相同且值相等為 true,不做類型轉(zhuǎn)換,比較容易理解 類型轉(zhuǎn)換比較運(yùn)算符 == 當(dāng)比較數(shù)字和字符串時(shí),字符串會(huì)轉(zhuǎn)換成數(shù)字值。 JavaScript 嘗試將數(shù)字字面量轉(zhuǎn)換為數(shù)...
閱讀 3566·2021-11-22 15:11
閱讀 4654·2021-11-18 13:15
閱讀 2714·2019-08-29 14:08
閱讀 3588·2019-08-26 13:49
閱讀 3104·2019-08-26 12:17
閱讀 3298·2019-08-26 11:54
閱讀 3122·2019-08-26 10:58
閱讀 2041·2019-08-26 10:21