Spec-Zone.ru › ESLint

radix

Принудительное использование аргумента radix при работе с parseInt()

💡 hasSuggestions

Некоторые проблемы, обнаруженные этим правилом, можно вручную исправить с помощью подсказок редактора подсказок

При использовании функции 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" запрещает указание 10 radix

always

Примеры неправильного кода для параметра "always" по умолчанию:

Открыть в игровой площадке
/*eslint radix: "error"*/

var num = parseInt("071");

var num = parseInt(someValue);

var num = parseInt("071", "abc");

var num = parseInt("071", 37);

var num = parseInt();

Примеры правильного кода для параметра "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 = parseInt("071", 10);

var num = parseInt("071", "abc");

var num = parseInt();

Примеры правильного кода для параметра "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.

Дополнительные материалы

parseInt Radix

Ссылки

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/radix

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API