Spec-Zone.ru › ESLint

radix

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

💡 hasSuggestions

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

При использовании функции parseInt() часто опускают второй аргумент — radix — и позволяют функции определить тип числа по первому аргументу. По умолчанию parseInt() автоматически определяет десятичные и шестнадцатеричные числа (с префиксом 0x). До ECMAScript 5 parseInt() также автоматически определял восьмеричные литералы, что вызывало проблемы, поскольку многие разработчики полагали, что начальный символ 0 будет игнорироваться.

Эта неоднозначность привела к рекомендации всегда использовать параметр radix в parseInt(), чтобы избежать нежелательных последствий. Поэтому вместо такого кода:

const num = parseInt("071");      // 57

Пишите так:

const num = parseInt("071", 10);  // 71

В ECMAScript 5 поведение parseInt() было изменено: теперь функция больше не определяет автоматически восьмеричные литералы, а рассматривает их как десятичные. Однако из-за различий в интерпретации первого параметра как шестнадцатеричного или десятичного числа многие разработчики продолжают использовать параметр radix, чтобы гарантировать интерпретацию строки ожидаемым образом.

Подробное описание правила

Это правило призвано предотвратить непреднамеренное преобразование строки в число с основанием, отличным от ожидаемого.

Примеры неправильного кода для этого правила:

Открыть в Playground
/*eslint radix: "error"*/

const num = parseInt("071");

const num1 = parseInt(someValue);

const num2 = parseInt("071", "abc");

const num3 = parseInt("071", 37);

const num4 = parseInt();

Примеры правильного кода для этого правила:

Открыть в Playground
/*eslint radix: "error"*/

const num = parseInt("071", 10);

const num1 = parseInt("071", 8);

const num2 = parseFloat(someValue);

Параметры

Устарело: Строковые параметры "always" и "as-needed" устарели. Установка любого из этих параметров не меняет поведение правила: теперь оно всегда требует указывать radix, как это было при задании параметра "always". Поскольку значение radix по умолчанию зависит от первого аргумента parseInt(), это правило предполагает, что второй аргумент (radix) всегда необходим.

Когда не следует использовать правило

Если вы хотите использовать поведение функции parseInt() по умолчанию, когда аргумент radix не указан, это правило можно отключить.

Версия

Это правило появилось в ESLint v0.0.7.

Дополнительная литература

parseInt() — JavaScript | MDN
developer.mozilla.org
Основание radix в parseInt
davidwalsh.name

Ресурсы

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

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

Spec-Zone.ru

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