前端常見bug系列4:JavaScript中忘記型別轉換所導致的條件判斷錯誤舉例
一、忘記型別轉換的小數比較錯誤
舉個例子,我們要進行一個字串型的小數的比較:`8.8`>`8.7`
,結果自然是true。
那麼`8.8`>`8.10`
呢?結果仍然是true,但願你沒有將它誤以為是8.8>8.10
。
二、忘記型別轉換的版本號比較錯誤
類似上面的問題,在進行版本號比較時,一樣存在。比如,我們這麼比較`8.8.1`>`8.10.1`
,結果就是錯誤的。合理的比較方法應該是將兩個待比較的版本號按`.`作為分隔符進行拆分,並將每一位轉換成數字,然後按位比較。
三、字串型的`true`,`false`條件判斷時導致的錯誤
來看這個語句:
if(`false`) console.log(1);
此時你很可能是希望該條件判斷為false,而實際上它卻是true。這樣直接寫出來相信每個人都不會弄錯,問題在於上面這個語句中的`false`,往往是經過諸多計算後得到的一個結果,或者是來自於介面的某個資料項,在這些諸多的表面現象掩蓋之下的字元型`false`,有時很容易被疏忽。
類似這樣的容易出現錯誤的語句還有:
if(`0`) console.log(1);
if(`undefined`) console.log(1);
var a;
if(typeof a) console.log(1);
諸如此類,不一而足。類似這種條件判斷語句,在程式碼中再常見不過,而且往往是業務邏輯執行與否的判斷開關,一旦出現判斷錯誤,則整個分支的執行都是錯誤的,影響相當嚴重。如果類似上述的錯誤語句出現在基礎工具方法中,影響的面還將更大。所以,可得長點心了!
相關文章
- [BUG反饋]模型編輯模板存在條件邏輯判斷錯誤模型
- 【JavaScript 學以致用】值的判斷以及型別轉換JavaScript型別
- sql最佳化-錯誤強制型別轉換導致索引失效SQL型別索引
- Javascript 中的資料型別判斷JavaScript資料型別
- javascript中的typeof和型別判斷JavaScript型別
- 常見的錯誤日誌型別型別
- MyBatis 基本資料型別條件判斷問題MyBatis資料型別
- javascript中如何判斷變數的型別?JavaScript變數型別
- JavaScript 中對變數型別的判斷JavaScript變數型別
- javascript中對變數型別的判斷方法JavaScript變數型別
- php輸出json資料,導致前端js判斷錯誤的分析及解決PHPJSON前端
- 前端筆記之JavaScript(二)關於運算子&初識條件判斷語句前端筆記JavaScript
- 蝦扯蛋之條件判斷的極致優化優化
- 深入理解 JavaScript 中的型別和型別判斷問題JavaScript型別
- 5個常見的JavaScript記憶體錯誤JavaScript記憶體
- JavaScript判斷資料型別JavaScript資料型別
- javascript資料型別判斷JavaScript資料型別
- javascript 資料型別判斷JavaScript資料型別
- 小白學python系列-(6) 條件判斷Python
- js中的型別判斷JS型別
- 我所知道的JavaScript中判斷資料型別JavaScript資料型別
- JavaScript中的型別判斷,瞭解一下?JavaScript型別
- javascript判斷變數的資料型別程式碼例項JavaScript變數資料型別
- 判斷應用所執行的CPU型別型別
- 如何判斷JavaScript的資料型別?JavaScript資料型別
- JavaScript的資料型別如何判斷JavaScript資料型別
- 資料型別隱式轉換導致的阻塞資料型別
- lisp 裡的條件判斷Lisp
- javascript中的資料型別及其常見用法JavaScript資料型別
- javascript 布林型別值判斷JavaScript型別
- 瞭解JavaScript中的型別轉換JavaScript型別
- JavaScript中的強制型別轉換JavaScript型別
- CHAR型別函式索引導致結果錯誤型別函式索引
- Oracle隱式型別轉換導致索引失效Oracle型別索引
- impdp時parallel=4導致的錯誤Parallel
- IDEA如何給debug斷點加上篩選條件判斷Idea斷點
- javascript判斷瀏覽器的型別和版本程式碼例項JavaScript瀏覽器型別
- 判斷瀏覽器型別和版本的javascript程式碼例項瀏覽器型別JavaScript