今天做用戶需求的時候,發現js檢驗出錯,我從頁面去了兩個值進行比較大小,原意想比較兩個數值的大小,因爲感覺js是弱數據類型,所以直接進行了比較,類型與:
a= '10000000' b= '5000000'
a>b輸出false ,如果a-b>0 則輸出true
查閱資料發現,這是JavaScript中隱式轉換的關係,首先在比較的時候,二者是按照string的形式進行比較的,那麼比較第一位的時候,1 < 5,直接返回false,而 a - b會把兩個數轉成number類型進行比較,轉換完之後輸出就是true。
所以一般從頁面上取得值之後,最好使用減法比較,或者對取得的值進行顯式轉換,Number(a)>Number(b).
總結:JavaScript中常用數字字符串比較
1、數字與數字之間直接比較
比較方式依據數學運算,沒什麼好說的。
2、數字與字符串數字之間直接比較
例如 數字5 與字符串數字'123',這種比較先將數字字符串轉爲純數字,然後爲純數字間的比較
3、字符串數字與字符串數字之間直接比較
例如 ‘5’和‘123’比較,這種比較爲ASCII碼比較,依次取每個字符,字符轉爲ASCII碼進行比較:‘5’>'123' ==>true
4、字符串之間直接比較
大小比較是依次取字符,字符轉ASCII碼,ASCII碼先大的即爲大;