radix
Принудительное использование аргумента radix при работе с parseInt()
Некоторые проблемы, обнаруженные этим правилом, можно вручную исправить с помощью подсказок редактора подсказок
При использовании функции parseInt(), часто опускают второй аргумент — radix, позволяя функции определить тип числа по первому аргументу. По умолчанию parseInt() автоматически определяет десятичные и шестнадцатеричные числа (через префикс 0x). До ECMAScript 5, parseInt() также автоматически определяли восьмеричные литералы, что создавало проблемы, так как многие разработчики предполагали, что ведущий 0 будет пропущен.
Это недопонимание привело к рекомендации всегда использовать параметр radix при работе с parseInt(), чтобы избежать непреднамеренных последствий. Вместо этого:
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"запрещает указание10radix
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.
Дополнительные материалы
Ссылки
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/radix