JSLint говорит "отсутствует параметр radix"; что мне делать?


Я запустил JSLint на этом JavaScript-коде, и он сказал:

проблема в строке 32 символ 30: отсутствует параметр radix.

этот код:

imageIndex = parseInt(id.substring(id.length - 1))-1;

что здесь не так?

8 403

8 ответов:

это всегда хорошая практика, чтобы пройти radix с parseInt -

parseInt(string, radix)

для десятичной -

parseInt(id.substring(id.length - 1), 10)

если параметр radix опущен, JavaScript предполагает следующее:

  • если строка начинается с "0x", то основание равно 16 (шестнадцатиричное)
  • если строка начинается с "0", то основание равно 8 (восьмеричное). Эта функция является устаревшей
  • если строка начинается с любого другого значения, то основание равно 10 (десятичное)

(ссылка)

Я не правильно отвечаю на вопрос, но, я думаю, имеет смысл очистить почему мы должны указать основание.

в документации MDN мы можем прочитать, что:

Если radix не определен или 0 (или отсутствует), JavaScript предполагает следующее:

  • [...]
  • если входная строка начинается с "0", то основание равно 8 (восьмеричное) или 10 (десятичное). Именно то, какое основание выбрано, зависит от реализации. ECMAScript 5 указывает, что используется 10 (десятичное число), но не все браузеры поддерживают это еще. По этой причине следует всегда указывать основание системы счисления при использовании parseInt.
  • [...]

источник: MDN parseInt ()

добавление следующего в верхней части файла JS скажет JSHint подавить предупреждение radix:

/*jshint -W065 */

Смотрите также:http://jshint.com/docs/#options

вы можете отключить это правило, если вы хотите пропустить этот тест.

вставить:

radix: false

В разделе "rules" в собственность .

Это не рекомендуется делать, если вы не понимаете это исключение.

чтобы избежать этого предупреждения, вместо того, чтобы использовать:

parseInt("999", 10);

Вы можете заменить его на:

Number("999");


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

Я решил это с помощью всего лишь +foo, чтобы преобразовать строку.

имейте в виду, что это не очень хорошо для читаемости (грязное исправление).

console.log( +'1' )
// 1 (int)

вы также можете просто добавить эту строку прямо над вашей строкой parseInt:

// eslint-disable-next-line

это отключит проверку eslint для следующей строки. Используйте это, если вам нужно пропустить только одну или две строки.

просто поместите пустую строку в место основания, потому что parseInt () принимает два аргумента:

parseInt(string, radix);

строка Значение для анализа. Если аргумент string не является строкой, то он преобразуется в строку (используя абстрактную операцию ToString). Ведущие пробелы в строке аргумента игнорируется.

radix Целое число от 2 до 36, которое представляет собой основание (основание в математических системах счисления) вышеупомянутой строки. Укажите 10 для десятичной системы счисления, обычно используемой людьми. Всегда указывайте этот параметр, чтобы исключить путаницу чтения и гарантировать предсказуемое поведение. Различные реализации дают разные результаты, когда не задано основание, обычно по умолчанию значение равно 10.

imageIndex = parseInt (id.подстрока(код.длина - 1))-1;
imageIndex = parseInt(id.substring(id.length - 1), '')-1;