第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一個js運算符問題

一個js運算符問題

肥皂起泡泡 2018-12-06 15:40:13
js code: <input type="text" id="txtOne" value="4" /><input type="text" id="txtTwo" value="13" /><input type="button" id="btnOperation" value="Compare" onclick="compare();" /> function compare(){?alert(document.getElementById("txtOne").value > document.getElementById("txtTwo").value);} 這段代碼返回結(jié)果是什么? 如果比較時 按照 數(shù)字類型比較 結(jié)果是 false; 如果比較時 按照 字符串類型比較 結(jié)果是 true; 但經(jīng)過測試,是按照字符串比較的 結(jié)果是 ture。 通用看js手冊關(guān)于“關(guān)系運算符(<、>、<=、>=)”描述如下 嘗試將 expression1 和 expression2 都轉(zhuǎn)換為數(shù)字。 如果兩個表達式均為字符串,則按字典序比較字符串。 如果任一表達式為 NaN,則返回 false。 負零等于正零。 負無窮小于包括其自身在內(nèi)的任何數(shù)。 正無窮大于包括其自身在內(nèi)的任何數(shù)。 ? 但是這里并沒有將 兩個文本框的值轉(zhuǎn)換成 數(shù)字做比較? 有知道的,請解釋下,謝謝! ?
查看完整描述

1 回答

?
智慧大石

TA貢獻1946條經(jīng)驗 獲得超3個贊

按一般思維這個結(jié)果是false。不過結(jié)果并非如此,返回的是true。

補充回復:?

這里執(zhí)行的是字符串比較。因為DOM元素的屬性都是字符串類型的,所以這里他只會做字符串比較。要做數(shù)字的大小對比必須使用parseInt進行轉(zhuǎn)換成整型數(shù)然后做對比。

所以這里的重點是javascript字符串比較的問題了。

javascript在進行字符串比較的時候執(zhí)行的是按位進行比較的,所以這里按位進行比較時就是字符4和字符1進行對比,這個對比就很明確了,ASCII碼值4是比1大的(這里還待商榷,我還需要證實下)。

另外為了說明這里執(zhí)行的是字符串比較,我把代碼稍稍加了句話,你可以看下

alert(typeof (document.getElementById("txtOne").value));
alert(typeof (document.getElementById("txtTwo").value));

?

補充二:

比較運算符

Footer Start NONSCROLLING BANNER END

用于比較表達式。

result = expression1 comparisonoperator expression2 

參數(shù)

result
任意數(shù)值。
expression
任何表達式。
comparisonoperator
任何比較運算符。
object
任何對象名稱。

說明

下表包含一個比較運算符的列表,以及確定 resultTrue, False, 或 Null 的條件。

運算符描述True 如果false 如果Null 如果
< 小于 expression1 < expression2 expression1 >= expression2 expression1 or expression2 = Null
<= 小于或等于 expression1 <= expression2 expression1 > expression2 expression1 or expression2 = Null
> 大于 expression1 > expression2 expression1 <= expression2 expression1 or expression2 = Null
>= 大于或等于 expression1 >= expression2 expression1 < expression2 expression1 or expression2 = Null
= 等于 expression1 = expression2 expression1 <> expression2 expression1 or expression2 = Null
<> 不等于 expression1 <> expression2 expression1 = expression2 expression1 or expression2 = Null

當比較兩個表達式時,您或許不容易確定比較的表達式是作為數(shù)值或作為字符串。

下表描述了如何對表達式進行比較、以及比較的結(jié)果,它取決于比較的子類型。

如果
兩個表達式都是數(shù)值 執(zhí)行數(shù)值比較。
兩個表達式都是字符串 執(zhí)行字符串比較。
一個表達式是數(shù)值,加一個表達式是字符串 數(shù)值表達式小于字符串表達式。
一個表達式為 Empty 而另一個為數(shù)值 執(zhí)行數(shù)值比較,0 作為 Empty 表達式的值。
一個表達式為Empty 而另一個表達式為字符串 執(zhí)行字符串比較,零長度的字符串 ("") 作為 Empty 表達式的值。
兩個表達式都為 Empty 則兩個表達式相等。

?

你看下上面的說法!這里很明確,兩個表達式都是字符串,執(zhí)行字符串比較。?而我們在操作DOM對象的屬性時取出的是字符串類型值。所以這里他進行的是字符串比較。

?

補充回復二:

為保證我在說明事實之前請先打開http://www.w3school.com.cn/js/pro_js_operators_relational.asp?這個鏈接,然后瀏覽一遍相關(guān)描述。

另外你也可以下載一個ECMAScript 262的手冊找到關(guān)系運算符一章,看看官方的描述。

看看你給的鏈接的文章http://jiake.javaeye.com/blog/231186說的是否正確,我不敢說他翻譯或者轉(zhuǎn)抄的是完全正確的,但至少他這里的說法不夠準確的。

針對JScript8中微軟官方文檔中描述這個是沒錯的,但我想這個是理解的問題。且看

  • 嘗試將 expression1 和 expression2 都轉(zhuǎn)換為數(shù)字。

  • 如果兩個表達式均為字符串,則按字典序比較字符串。?????????????????????????????????????????????????????????? 針對這里的描述我想是會產(chǎn)生理解的偏差的,但是這里我覺得寫的還是很明確的,嘗試將exp1和exp2轉(zhuǎn)換為數(shù)字,如果exp1和exp2均為字符串,則按字典順序比較字符串。備注:操作DOM對象的屬性時取出的是字符串類型值。

  • 不好意思,我這里扣字眼了!

    查看完整回答
    反對 回復 2018-12-24
    • 1 回答
    • 0 關(guān)注
    • 509 瀏覽
    慕課專欄
    更多

    添加回答

    舉報

    0/150
    提交
    取消
    微信客服

    購課補貼
    聯(lián)系客服咨詢優(yōu)惠詳情

    幫助反饋 APP下載

    慕課網(wǎng)APP
    您的移動學習伙伴

    公眾號

    掃描二維碼
    關(guān)注慕課網(wǎng)微信公眾號