咖啡伴侶

          呆在上海
          posts - 163, comments - 156, trackbacks - 0, articles - 2

          JS instanceof 判斷類型 問題

          Posted on 2009-06-29 18:11 oathleo 閱讀(5562) 評論(3)  編輯  收藏 所屬分類: Web
          判斷變量類型:一般情況下,可以先用typeof 運算符,如果結果是"object",再用instanceof來判斷;
          ?特別的地方是:
          ??? instanceof不認為原始類型值的變量是對象,

          ???1.?var?temp="a?string?for?test";???
          ???
          2.?//下面這句返回"string"???
          ???3.?alert(?typeof?temp);???
          ???
          4.?//下面這句返回"false"???
          ???5.?alert(temp?instanceof?String);???
          ???
          6.???
          ???
          7.?//看看Ext內部實現,判斷String類型?
          ???8. if(? typeof temp== "string"){
          ?? 9. }

          其他附加問題:
          • null:表示尚未存在的對象,注意,盡管尚未存在,也是個對象啊,所以用typeof檢測一個null值變量的結果是Object;不過,為了便于寫if語句,在js中,"undefined==false", "null=false", 因此,"undefined==null"。
          • 整數:最容易犯的錯誤就是,忘了070其實是個八進制數,相當于十進制的56;
          • 浮點數:“在進行運算之前,真正存儲的是字符串”——這應該是解釋執行的本質決定的吧——直接后果是,alert(0.8)這樣的語句可以正確輸出,而alert(2*0.8)的輸出就成了"2.40000000000000003"
          • 數字邊界: 數字有幾個邊界值,分別是Number.MAX_VALUE(最大值), Number.MIN_VALUE(最小值), Number.POSITIVE_INFINITY(正無窮), Number.NEGATIVE_INFINITY(負無窮), Infinity(無窮大,-Infinity,這個有點莫名其妙,不知道為啥又搞出一套);特別地,還有一個isFinit(iNumber)函數來判 斷數字是否為無窮大。
          • NaN:一些需要數字作為參數的函數,當傳入的實參無法轉換為數字時,往往會返回這個值;關于NaN,最重要的就是要記住NaN!=NaN,因此判斷一個變量是否為NaN,一定要使用isNaN(var)函數。
          • 將字符串轉換為數字:sVar.parseInt() 是最常用的函數,也最容易出錯,為了保險起見,最好每次調用的時候,都加上“進制”的參數,比如:a.parseInt(10),就制定了按十進制轉換字 符串a;Number(sVar)也是一種轉換方式,不同的是,它要求整個字符串都得是有效數字,因此Number("4.5.5")將返回NaN;

          Feedback

          # re: JS instanceof 判斷類型 問題[未登錄]  回復  更多評論   

          2010-09-28 17:00 by polaris
          博主,此處不對:而alert(2*0.8)的輸出就成了"2.40000000000000003" 。不知道你寫的時候有沒有測試,或者是你的JavaScript版本導致的?我測試是正常的,輸出為1.6

          # re: JS instanceof 判斷類型 問題[未登錄]  回復  更多評論   

          2011-07-22 17:39 by peter
          同上,firebug下調試的.

          # re: JS instanceof 判斷類型 問題  回復  更多評論   

          2012-07-27 11:35 by 瞬間的永恒
          那里應該是 alert(3*0.8) ,我這邊的結果是2.4000000000000004
          主站蜘蛛池模板: 凌海市| 商丘市| 嘉禾县| 龙海市| 宣威市| 阳西县| 临泉县| 虹口区| 佳木斯市| 玉环县| 芮城县| 辉南县| 永昌县| 通江县| 浙江省| 子长县| 雅江县| 大安市| 石景山区| 剑河县| 怀安县| 尤溪县| 都匀市| 沙雅县| 临朐县| 浑源县| 公安县| 合作市| 苏尼特右旗| 华蓥市| 石渠县| 米脂县| 彝良县| 康马县| 临高县| 闵行区| 循化| 辽宁省| 巴马| 资中县| 常宁市|