Я запустил JSLint для этого кода JavaScript, и он сказал:
Проблема в строке 32, символ 30: отсутствует параметр radix.
Это код вопроса:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Что здесь не так?
javascript
jslint
radix
Майк Вирвинд
источник
источник
Redundant radix parameter
radix
аргумент является числовым значением, а не строковым представлением числового значения, поэтому не нужно указывать основание.Чтобы избежать этого предупреждения, вместо использования:
Вы можете заменить его на:
Обратите внимание, что parseInt и Number ведут себя по- разному , но в некоторых случаях один может заменить другой.
источник
parseInt
иNumber
. Вот старый тест производительности .Number()
в 6 раз быстрееparseInt()
Я не правильно отвечаю на вопрос, но, думаю, имеет смысл пояснить, почему мы должны указывать основание .
В документации MDN мы можем прочитать, что:
Если основание не определено или 0 (или отсутствует), JavaScript предполагает следующее:
Источник: MDN parseInt ()
источник
Вы можете отключить это правило, если хотите пропустить этот тест.
Вставка:
Под
rules
свойством " " вtslint.json
файле.Не рекомендуется делать это, если вы не понимаете это исключение.
источник
Добавление следующего в верхней части вашего файла JS скажет JSHint подавить предупреждение по основанию:
Смотрите также: http://jshint.com/docs/#options
источник
"-W065": true
, например, в.jshintrc
файле.Я решил это с помощью + foo, чтобы преобразовать строку.
Имейте в виду, что это не очень хорошо для удобочитаемости
источник
Вы также можете просто добавить эту строку прямо над строкой parseInt:
Это отключит проверку eslint для следующей строки. Используйте это, если вам нужно пропустить только одну или две строки.
источник
Просто поместите пустую строку в основную точку, потому что parseInt () принимает два аргумента:
parseInt (string, radix);
строка Значение для анализа. Если строковый аргумент не является строкой, он преобразуется в строку (используя абстрактную операцию ToString). Ведущие пробелы в строковом аргументе игнорируются.
radix Целое число от 2 до 36, представляющее основание (основание в математических системах счисления) вышеупомянутой строки. Укажите 10 для десятичной системы счисления, обычно используемой людьми. Всегда указывайте этот параметр, чтобы избежать путаницы читателя и гарантировать предсказуемое поведение. Разные реализации дают разные результаты, когда основание не указано, обычно значение по умолчанию равно 10.
imageIndex = parseInt (id.substring (id.length - 1)) - 1;imageIndex = parseInt(id.substring(id.length - 1), '')-1;
источник
Просто добавьте свое пользовательское правило в .eslintrc, которое выглядит следующим образом,
"radix": "off"
и вы будете свободны от этого ненужного предупреждения. Это для Эслинт Линтер.источник
До ECMAScript 5 parseInt () также автоматически определял восьмеричные литералы, что вызывало проблемы, поскольку многие разработчики предполагали, что ведущий 0 будет игнорироваться.
Так что вместо:
Сделай это:
Ссылка
источник
Вместо вызова
substring
функции вы можете использовать.slice()
Здесь -1 в срезе указывает, что начинать срез с последнего индекса.
Спасибо.
источник