JSLint говорит "отсутствует параметр radix"; что мне делать?
Я запустил JSLint на этом JavaScript-коде, и он сказал:
проблема в строке 32 символ 30: отсутствует параметр radix.
этот код:
imageIndex = parseInt(id.substring(id.length - 1))-1;
что здесь не так?
8 ответов
это всегда хорошая практика, чтобы передать radix с parseInt -
parseInt(string, radix)
для десятичной -
parseInt(id.substring(id.length - 1), 10)
если параметр radix опущен, JavaScript предполагает следующее:
- если строка начинается с "0x", то основание равно 16 (шестнадцатиричное)
- если строка начинается с "0", то радиус равен 8 (восьмеричный). Эта функция устарела
- если строка начинается с любого другого значения, то значение radix равно 10 (decimal)
(ссылка)
Я не правильно отвечаю на вопрос, но, я думаю, имеет смысл очистить почему мы должны указать radix.
в документации MDN мы можем прочитать, что:
Если radix не определен или 0 (или отсутствует), JavaScript предполагает следующее:
- [...]
- если входная строка начинается с "0", radix-восемь (восьмеричное) или 10 (десятичное). Именно то, какой radix выбран, зависит от реализации. ECMAScript 5 указывает, что используется 10 (decimal), но не все браузеры поддерживают это. По этой причине всегда указывайте radix при использовании parseInt.
- [...]
источник: MDN parseInt ()
добавление следующего поверх вашего файла JS скажет JSHint подавить предупреждение radix:
/*jshint -W065 */
см. также:http://jshint.com/docs/#options
вы можете отключить это правило, если вы хотите пропустить этот тест.
вставить:
radix: false
В разделе "rules
" в собственность .
не рекомендуется делать это, если вы не понимаете это исключение.
чтобы избежать этого предупреждения, вместо того, чтобы использовать:
parseInt("999", 10);
Вы можете заменить его на:
Number("999");
обратите внимание, что parseInt и Number имеют разное поведение, но в некоторых случаях можно заменить другими.
Я решил его, просто используя +foo, чтобы преобразовать строку.
имейте в виду, что это не отлично подходит для читаемости (грязное исправление).
console.log( +'1' )
// 1 (int)
вы также можете просто добавить эту строку прямо над строкой синтаксического анализа:
// eslint-disable-next-line
это отключит проверку eslint для следующей строки. Используйте это, если вам нужно пропустить только одну или две строки.
просто поместите пустую строку в место radix, потому что parseInt () принимает два аргумента:
parseInt (string, radix);
строка Значение для анализа. Если аргумент string не является строкой, он преобразуется в строку (с помощью абстрактной операции ToString). Начальные пробелы в аргументе string игнорируются.
radix Целое число от 2 до 36, представляющее собой радиус (основание в математических системах счисления) вышеупомянутой строки. Укажите 10 для десятичной системы счисления, обычно используемой людьми. Всегда указывайте этот параметр, чтобы устранить путаницу в чтении и гарантировать предсказуемое поведение. Различные реализации дают разные результаты, когда radix не указан, обычно по умолчанию значение 10.
индекс_образа = parseInt(ИД.подстрока(код.длина - 1))-1;imageIndex = parseInt(id.substring(id.length - 1), '')-1;