
radix
使用 parseInt()
時,強制使用一致的 radix 引數
💡 有建議
此規則報告的某些問題可透過編輯器建議手動修正
當使用 parseInt()
函式時,通常會省略第二個引數 radix,並讓函式嘗試從第一個引數中判斷它是哪種類型的數字。預設情況下,parseInt()
將會自動偵測十進制和十六進制(透過 0x
前綴)。在 ECMAScript 5 之前,parseInt()
也會自動偵測八進制字面量,這會導致問題,因為許多開發人員假設開頭的 0
會被忽略。
這種混淆導致建議您始終使用 parseInt()
的 radix 參數,以消除意外的後果。所以不要這樣做
var num = parseInt("071"); // 57
這樣做
var num = parseInt("071", 10); // 71
ECMAScript 5 變更了 parseInt()
的行為,使其不再自動偵測八進制字面量,而是將它們視為十進制字面量。然而,第一個參數的十六進制和十進制解釋之間的差異,導致許多開發人員繼續使用 radix 參數,以確保字串以預期的方式解釋。
另一方面,如果程式碼僅以符合 ES5 的環境為目標,則傳遞 radix 10
可能會是多餘的。在這種情況下,您可能希望禁止使用這樣的 radix。
規則詳情
此規則旨在防止將字串意外轉換為與預期不同的基數的數字,或防止在僅以現代環境為目標時多餘的 10
radix。
選項
此規則有兩個選項
"always"
強制提供 radix (預設)"as-needed"
不允許提供10
radix
always
預設 "always"
選項的錯誤程式碼範例
在遊樂場中開啟
/*eslint radix: "error"*/
var num = ;
var num = ;
var num = ;
var num = ;
var num = ;
預設 "always"
選項的正確程式碼範例
在遊樂場中開啟
/*eslint radix: "error"*/
var num = parseInt("071", 10);
var num = parseInt("071", 8);
var num = parseFloat(someValue);
as-needed
"as-needed"
選項的錯誤程式碼範例
在遊樂場中開啟
/*eslint radix: ["error", "as-needed"]*/
var num = ;
var num = ;
var num = ;
"as-needed"
選項的正確程式碼範例
在遊樂場中開啟
/*eslint radix: ["error", "as-needed"]*/
var num = parseInt("071");
var num = parseInt("071", 8);
var num = parseFloat(someValue);
何時不應使用它
如果您不想強制執行 10
radix 值的存在或省略,則可以關閉此規則。
版本
此規則在 ESLint v0.0.7 中引入。
延伸閱讀
