- JavaScript程序設(shè)計:基礎(chǔ)·PHP·XML
- (美)Elizabeth Drake
- 1516字
- 2020-10-30 18:12:32
2.4.2 關(guān)系操作符
有時發(fā)現(xiàn)一個問題的答案不像提出正確問題那樣重要。如果要編寫從一個長的名單中查找匹配Marguerita Gonzalez的程序,你會檢查列表中的每個名字并且詢問true/false問題:“這個名字與Marguerita Gonzalez相同嗎?”這個程序能夠運(yùn)行,但是極其沒有效率和耗時。然而,如果從列表中間挑選一個名字,并且詢問“通過比較兩個名字中每個字符的ASCII碼表示,Marguerita Gonzalez是否比這個名字大?”那么對這個問題的回答將立刻減少查找工作的一半。如果這個問題的答案是true,那么可以除去名單中的前半部分;如果這個問題的答案是false,那么可以除去名單中的后半部分。要詢問這種類型的問題,可以使用關(guān)系操作符。
有6個關(guān)系操作符,如表2-3所列。有的操作符是清楚的、簡單的,而有的操作符要么比較特殊,要么使用不熟悉的記號。你很可能從數(shù)學(xué)課中了解了大于符號(>)和小于符號(<),但是其他符號有必要討論一下。
表2-3 關(guān)系操作符
鍵盤上沒有單一符號表示小于或等于和大于或等于的概念。這些概念通過組合以下符號表示:<=表示小于或等于,而>=表示大于或等于。
類似地,沒有單一符號表示不等于的概念,它也使用了兩個符號。在JavaScript中,符號組合!=表示不等于操作符。
最后,需要特別注意等號。在程序設(shè)計中,以下兩件事情是有區(qū)別的:一是把一個東西設(shè)置為與另一個東西的值相同,二是詢問這樣一個問題“這個東西是否與另一個東西有相同的值?”當(dāng)將一個值賦給一個變量時使用等號(=),此時等號用做賦值操作符;而當(dāng)比較兩個東西的值時,意指“左邊東西的值與右邊東西的值是否相同?”此時稱為比較操作符。在JavaScript中,符號==(兩個等號)用于比較一個變量的值和另一個變量、值或表達(dá)式。
當(dāng)在語句中使用數(shù)學(xué)操作符時,其結(jié)果是一個新值。例如,3+5等于8和JavaScript語句myNum=3+5,將把值8放入變量myNum中。而關(guān)系操作符有所不同,關(guān)系操作符意指詢問一個問題而且其唯一可能的答案是yes或no(即計算機(jī)術(shù)語true或false)。例2.14說明關(guān)系操作符的使用。
例2.14 使用關(guān)系操作符
a)5<3的值為false,因?yàn)?不小于3。
b)7>6的值為true,因?yàn)?大于6。
c)9>=9的值為true,因?yàn)?gt;=詢問問題“左邊的東西是否大于或等于右邊的東西?”而9等于9,不大于9。
d)18!=6的值為true,因?yàn)?8與6不同。
e)18!=18的值為false,因?yàn)?8與18相同,因此語句“18與18不同”是錯誤的陳述。
f)12==12的值為true,因?yàn)?2與12相同。
g)12==45的值為false,因?yàn)?2與45不同。
關(guān)系操作符可以和其他操作符結(jié)合起來產(chǎn)生更復(fù)雜的條件和問題。例2.15示范如何使用變量混合關(guān)系和數(shù)學(xué)操作符表示值的例子。
例2.15 和變量一起使用關(guān)系操作符 對于這個例子,其中的變量有下列值:
a)W<(X+Y)的值為true,因?yàn)?小于(6+3)。
b)(Y*W)>X的值為false,因?yàn)?3*2)是6,而6不大于6。
c)(Y+Z)>=(W-Z)的值為true,因?yàn)?3+0)大于(2-0)。
d)X!=(W*Y)的值為false,因?yàn)?與(2*3)相同,所以說這兩個東西不相同是錯誤的。
e)(Z/X)!=Y的值為true,因?yàn)?0/6)與3不同。
f)(X-(W*Y))==Z的值為true,因?yàn)?6-(2*3))與0相同。
g)X==(X*Z)的值為false,因?yàn)?與(6*0)不同。
例2.16展示的程序說明賦值操作符和比較操作符之間的不同。
例2.16 比較操作,不是賦值
執(zhí)行時,顯示以下信息:
例2.17 使用關(guān)系操作符處理字符 對于這個例子,其中的變量有下列值:
a)R≤highA的值為false,因?yàn)榇髮懽帜窻的ASCII碼是82,大寫字母A的ASCII碼是65,而82不小于65。
b)lowa>highA的值為true,因?yàn)樾懽帜竌的ASCII碼是97,大寫字母A的ASCII碼是65,而97大于65。
c)x>=star的值為true,因?yàn)樾懽帜竫的ASCII碼是120,星號(*)的ASCII碼是42,而120大于42。
d)highA!=lowa的值為true,因?yàn)榇髮懽帜窤(65)的ASCII碼值與小寫字母a(97)不相同。
e)R!=R的值為false,因?yàn)榇髮懽帜窻的ASCII碼值是82,所以82與82不同是錯誤的。
例2.18說明如何使用關(guān)系操作符處理字符串。
例2.18 使用關(guān)系操作符處理字符串 對于這個例子,其中的變量有下列值:
a)car<food的值為false,因?yàn)閏ar的第一個字母是小寫字母s,其ASCII碼是115,而food的第一個字母是小寫字母p,其ASCII碼是112。
b)car>tree的值為true,因?yàn)閏ar的第一個字母是小寫字母s,其ASCII碼是115,而tree的第一個字母是小字字母o,其ASCII碼是111。
c)girl<boy的值為true,因?yàn)間irl的第一個字母是大寫字母J,其ASCII碼是74,與boy的第一個字母完全相同。當(dāng)表達(dá)式左邊字符串第一個字符匹配于右邊字符串的第一個字符時,就檢測下一個字符。在這種情況下,girl和boy的第二個字母也相同,都是小寫字母o。然后再檢測下一個字母,這時就可找到答案了。girl的第三個字母是小寫字母a(ASCII碼是97),而boy的第三個字母是e(ASCII碼是101)。因?yàn)?7小于101,所以這個表達(dá)式的值是true。
d)car<=car的值為true,因?yàn)槿绻筮叺闹敌∮谟疫叺闹祷蛘邇蓚€值是相同的,那么這個關(guān)系操作符返回true。
e)kangaroo!=boy的值為true。盡管兩個字符串對應(yīng)位置上的每個字母都相同,但是kangaroo的第一個字母是小寫字母j(ASCII碼是106),boy的第一個字母是大寫字母J(ASCII碼是74),而106與74不同,因此這兩個變量持有的值不同。
f)tree!=tree的值為false,因?yàn)閮蓚€變量的值相同,所以說它們不同是錯誤的。
2.4節(jié)檢查點(diǎn)
2.15 找出下列每個字符的ASCII碼值:
a)Q
b)q
c)/
d)4
e)&
2.16 如果X=2、Y=3和Z=9,給出下列每個表達(dá)式的值:
a)X>Y
b)Y<=Z
c)Y*Y!=Z
d)X==Y
2.17 如果K=4、M=7和P=2,給出下列每個表達(dá)式的值:
a)K>M*P
b)(K*K)/P>=M
c)K+2!=K+P
d)M*M==M*(K+3)
2.18 描述賦值操作符(=)和比較操作符(==)之間的不同。
2.19 如果B=“B”、b=“b”、F=“+”、G=“9”和H=“b”,給出下列每個表達(dá)式的值:
a)B>b
b)F<=G
c)B!=G
d)b==H
2.20 如果red=“red”、green=“green”、gold=“gold”和jewel=“golden”,給出下列每個表達(dá)式的值:
a)red>green
b)green<=gold
c)gold!=jewel
d)jewel==green
- Data Visualization with D3 4.x Cookbook(Second Edition)
- Java Web開發(fā)學(xué)習(xí)手冊
- Docker技術(shù)入門與實(shí)戰(zhàn)(第3版)
- 基于免疫進(jìn)化的算法及應(yīng)用研究
- 高級語言程序設(shè)計(C語言版):基于計算思維能力培養(yǎng)
- Linux Device Drivers Development
- Python算法詳解
- Swift 4 Protocol-Oriented Programming(Third Edition)
- Learning PHP 7
- Machine Learning With Go
- Android移動應(yīng)用項(xiàng)目化教程
- Mastering OAuth 2.0
- HTML5游戲開發(fā)實(shí)戰(zhàn)
- Tableau Dashboard Cookbook
- DevOps 精要:業(yè)務(wù)視角