干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

十二年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號 掃一掃關(guān)注
小程序
tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

ECMAScript關(guān)系操作符規(guī)則及應(yīng)用技巧

百恒網(wǎng)絡(luò) 2012-02-16 4806

ECMAScript 關(guān)系操作符(小于(<)、大于(>)、小于等于(<=)和大于等于(>=))

關(guān)系操作符

小于(<)、大于(>)、小于等于(<=)和大于等于(>=)這幾個關(guān)系操作符用于對兩個值進(jìn)行比較,比較的規(guī)則與我們在數(shù)學(xué)課上所學(xué)的一樣。這幾個操作符都返回一個布爾值,如下面的例子所示:

var resultl=5>3; //true

var result2=5<3; //false

在此南昌網(wǎng)站建設(shè)公司前端開發(fā)工程師提示:與ECMAScript中的其他操作符一樣,當(dāng)關(guān)系操作符的操作數(shù)使用了非數(shù)值時,也要進(jìn)行數(shù)據(jù)轉(zhuǎn)換或完成某些奇怪的操作。以下就是相應(yīng)的規(guī)則:

◎如果兩個操作數(shù)都是數(shù)值,則執(zhí)行數(shù)值比較;

◎如果兩個操作數(shù)都是字符串,則比較兩個字符串對應(yīng)的字符編碼值;

◎如果一個操作數(shù)是數(shù)值,則將另一個操作數(shù)轉(zhuǎn)換為一個數(shù)值,然后執(zhí)行數(shù)值比較;

◎如果一個操作數(shù)是對象,則調(diào)用這個對象的valueOf()方法,用得到的結(jié)果按照前面的規(guī)則執(zhí)行比較。如果對象沒有valueOf()方法,則調(diào)用toString()方法,并用得到的結(jié)果根據(jù)前面的規(guī)則執(zhí)行比較;

◎如果一個操作數(shù)是布爾值,則先將其轉(zhuǎn)換為數(shù)值,然后再執(zhí)行比較。

在使用關(guān)系操作符比較兩個字符串時,會執(zhí)行—種奇怪的操作。很多人都會認(rèn)為,在比較字符串值時,小于的意思是“在字母表中的位置靠前”,而大于則意味著“在字母表中的位置靠后”,但實(shí)際上完全不是那么回事。在比較字符串時,實(shí)際比較的是兩個字符串中對應(yīng)位置的每個字符的字符編碼值。經(jīng)過這么一番比較之后,再返回一個布爾值。由于大寫字母的字符編碼全部小于小寫字母的字符編碼,因此我們就會看到如下所示的奇怪現(xiàn)象:

var result="Brick"’<"alphabet"; //true

在這個例子中,字符串”Brick”被認(rèn)為小于字符串”alphabet”。原因是字母B的字符綿碼為66.而字母a的字符編碼是97。如果要真正按字母表順序比較字符串,南昌網(wǎng)站制作公司前端開發(fā)工程師認(rèn)為,就必須把兩個操作數(shù)轉(zhuǎn)換為相同的大小寫形式(全部大寫或全部小寫),然后再執(zhí)行比較,如下所示:

var result="Brick".toLowerCase() <"alphabet".toLowerCase(); //false

通過將兩個操作數(shù)都轉(zhuǎn)換為小寫形式,就可以得出”alphabet”按字母表順序排在。Brick。之前的正確判斷了。

另一種奇怪的現(xiàn)象發(fā)生在比較兩個數(shù)字字符串的情況下,比如下面這個例子:

var result="23"<"3"; //true

確實(shí),當(dāng)比較字符串”23”是否小于”3”時,結(jié)果居然是true。這是因?yàn)閮蓚€操作數(shù)都是字符串,而字符串比較的是字符編碼(”2”的字符編碼是50,而”3”的字符編碼是51)。不過,如果像下面例子中一樣,將一個操作數(shù)改為數(shù)值,比較的結(jié)果就正常了:

var result="23"<3;//false

此時,字符串”23”會被轉(zhuǎn)換成數(shù)值23,然后再與3進(jìn)行比較,因此就會得到合理的結(jié)果。在比較數(shù)值,字符串都會被轉(zhuǎn)換成數(shù)值,然后再以數(shù)值方式與另一個數(shù)值比較,當(dāng)然,這個規(guī)則對前面的例子是適用的。可是,如果那個字符串不能被轉(zhuǎn)換成一個合理的數(shù)值呢?比如:

Var result=”a”<3;//false,因?yàn)椤盿”被轉(zhuǎn)換成了NaN

由于字母”a”不能轉(zhuǎn)換成合理的數(shù)值,因此就被轉(zhuǎn)換成了NaN。南昌網(wǎng)頁設(shè)計(jì)公司技術(shù)人員介紹,所以根據(jù)規(guī)則,任何操作數(shù)與NaN進(jìn)行關(guān)系比較,結(jié)果都是false。于是,就出現(xiàn)了下面這個有意思的現(xiàn)象:

var resultl=NaN<3; //false

var result2=NaN>=3; //false

按照常理,如果一個值不小于另一個值,則一定是大于或等于那個值。然而,在與NaN進(jìn)行比較時,這兩個比較操作的結(jié)果都返回了false。

希望本文對廣大站長或從事企業(yè)網(wǎng)站建設(shè)公司的團(tuán)隊(duì)有所幫助,如對此不太理解的,可以與南昌網(wǎng)絡(luò)公司百恒網(wǎng)絡(luò)技術(shù)部聯(lián)系。我們很高興與廣大站長和從事企業(yè)網(wǎng)站建設(shè)公司技術(shù)人員分享我們的技術(shù)和經(jīng)驗(yàn)。


400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)小程序

歡迎您的光顧,我們將竭誠為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×