成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript由“5” >= "10"返回true引起的思考

nevermind / 1353人閱讀

摘要:眾所周知,是弱類型的語言。因此在一些不注意的地方容易犯錯(cuò)誤。通過得到這兩個(gè)值,是字符串類型的數(shù)字,很顯然返回之前已經(jīng)了。反思雖然寫的是弱類型的,但是在有明確類型的情況下,最好還是轉(zhuǎn)換成對(duì)應(yīng)的類型進(jìn)行比較。

眾所周知,js是弱類型的語言。因此在一些不注意的地方容易犯錯(cuò)誤。在此記錄一下前幾天寫代碼的時(shí)候,判斷兩個(gè)值相比較的結(jié)果來進(jìn)行下一步的操作。通過ajax得到這兩個(gè)值,是字符串類型的數(shù)字,很顯然返回之前已經(jīng)toString()了。當(dāng)時(shí)做比較的時(shí)候我也沒有多想,我以為這兩個(gè)值會(huì)自動(dòng)轉(zhuǎn)換成number類型來比較,結(jié)果就悲劇了。
代碼如下

if(a>=b){
    ....
}
//實(shí)際執(zhí)行結(jié)果是

if("5">="10"){
    ....
}
//結(jié)果值是 true

發(fā)現(xiàn)這個(gè)bug后,我馬上更新了代碼進(jìn)行了to number操作,其實(shí)也很簡(jiǎn)單,對(duì)于明確的由number to string的值,只要進(jìn)行 a = a*1;這樣的操作就可以了。

疑問來了

雖然bug很快就被解決了,但是我卻陷入了思考,為什么"5">"10"呢?

開始實(shí)驗(yàn)、猜測(cè)

我又測(cè)試了"5">"6","5">"11"等等,然后發(fā)現(xiàn)了規(guī)律,這兩個(gè)值比較是依賴于字符串的第一個(gè)值的大小。
接下來我又驗(yàn)證了英文字母、漢字之間的相互比較,很快就有了猜測(cè)方向,很可能是根據(jù)ASCII值來進(jìn)行比較的。然后就下班溜了。。。

證實(shí)

今天查了一下資料,講的很清楚小議js下字符串比較大小

一句話概括就是按照字典序進(jìn)行對(duì)比。

反思

雖然寫的是弱類型的js,但是在有明確類型的情況下,最好還是轉(zhuǎn)換成對(duì)應(yīng)的類型進(jìn)行比較。

早點(diǎn)上TypeScript的車吧

誰有TypeScript + React 相關(guān)資料麻煩分享一下,謝謝啦

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105398.html

相關(guān)文章

  • 解析ES6變量賦值和基本數(shù)據(jù)類型

      let和const  let和const兩者并不存在變量提升  這里要說明的是變量一定要在聲明后使用,否則報(bào)錯(cuò)?! ara=[];   for(vari=0;i<10;i++){   a[i]=function(){   console.log(i);   };   }   a[6]();//10  變量i是var聲明的,我們要知道這里在全局范圍內(nèi)都有效。我們要知道在每一次循環(huán)中,新的...

    3403771864 評(píng)論0 收藏0
  • Django中celery使用項(xiàng)目實(shí)例

      小編寫這篇文章的主要目的,主要是給大家去進(jìn)行講解Django項(xiàng)目實(shí)例情況,包括celery的一些具體使用情況介紹,學(xué)習(xí)這些的話,對(duì)我們的工作和生活幫助還是很大的,但是怎么樣才能夠更快的進(jìn)行上手呢?下面就一個(gè)具體實(shí)例給大家進(jìn)行解答?! ?、django應(yīng)用Celery  django框架請(qǐng)求/響應(yīng)的過程是同步的,框架本身無法實(shí)現(xiàn)異步響應(yīng)?! 〉俏覀?cè)陧?xiàng)目過程中會(huì)經(jīng)常會(huì)遇到一些耗時(shí)的任務(wù),比如:...

    89542767 評(píng)論0 收藏0
  • 匯總有關(guān)JS對(duì)象創(chuàng)建與繼承

      之前也有和大家講過有關(guān)JS的對(duì)象創(chuàng)建和對(duì)象繼承,本篇文章主要為大家做個(gè)匯總和梳理?! S中其實(shí)就是原型鏈繼承和構(gòu)造函數(shù)繼承的毛病,還有就是工廠、構(gòu)造、原型設(shè)計(jì)模式與JS繼承。 JS高級(jí)程序設(shè)計(jì)4:class繼承的重點(diǎn),不只是簡(jiǎn)簡(jiǎn)單單的語法而已。  對(duì)象創(chuàng)建  不難發(fā)現(xiàn),每一篇都離不開工廠、構(gòu)造、原型這3種設(shè)計(jì)模式中的至少其一!  那JS為什么非要用到這種3種設(shè)計(jì)模式了呢??  我們先從對(duì)...

    3403771864 評(píng)論0 收藏0
  • JavaScript進(jìn)階之函數(shù)和對(duì)象知識(shí)點(diǎn)詳解

      在過往學(xué)習(xí)的JavaScript都是在基礎(chǔ),現(xiàn)在為大家介紹更為深入的JavaScript知識(shí)?! avaScript函數(shù)  JavaScript函數(shù)和Java函數(shù)是有一部分相似的,所以學(xué)習(xí)起來也會(huì)相對(duì)簡(jiǎn)單  基本構(gòu)造  1.直接構(gòu)造  //function代表函數(shù)標(biāo)志,name為函數(shù)名稱,參數(shù)可有可無   functionname(參數(shù)){   //...   return;   }  2....

    3403771864 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<