Я запустив JSLint на цьому коді JavaScript, і він сказав:
Проблема в рядку 32 символу 30: Відсутній параметр радіасу.
Це код, про який йдеться:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Що тут не так?
Я запустив JSLint на цьому коді JavaScript, і він сказав:
Проблема в рядку 32 символу 30: Відсутній параметр радіасу.
Це код, про який йдеться:
imageIndex = parseInt(id.substring(id.length - 1))-1;
Що тут не так?
Відповіді:
Завжди є хорошою практикою передавати radix за допомогою parseInt -
parseInt(string, radix)
Для десяткової -
parseInt(id.substring(id.length - 1), 10)
Якщо параметр radix опущено, JavaScript передбачає наступне:
( Довідка )
Redundant radix parameter
radix
Аргумент є числовим значенням, а не рядковим представленням числового значення, тому немає значення для задавання радіусу .
Щоб уникнути цього попередження, замість використання:
parseInt("999", 10);
Ви можете замінити його на:
Number("999");
Зауважте, що parseInt і Number мають різні способи поведінки , але в деяких випадках одна може замінити іншу.
parseInt
та між Number
. Ось старий тест на працездатність .
Number()
на 6 parseInt()
Я не відповідаю належним чином на питання, але, думаю, має сенс зрозуміти, чому нам слід вказати радіус .
З документації MDN ми можемо прочитати:
Якщо значення radix не визначено або 0 (або відсутнє), JavaScript передбачає наступне:
Джерело: MDN parseInt ()
Додавання наступного зверху до вашого файлу JS дозволить JSHint придушити радіаційне попередження:
/*jshint -W065 */
Дивіться також: http://jshint.com/docs/#options
"-W065": true
, наприклад, у .jshintrc
файлі.
Я вирішив це лише за допомогою + foo, щоб перетворити рядок.
Майте на увазі, що це не чудово для читабельності (брудне виправлення).
console.log( +'1' )
// 1 (int)
Ви також можете просто додати цей рядок прямо над вашим рядком parseInt:
// eslint-disable-next-line
Це відключить перевірку eslint для наступного рядка. Використовуйте це, якщо вам потрібно пропустити лише один або два рядки.
Просто покладіть порожнє рядок у місце, де знаходиться параметр, тому що parseInt () бере два аргументи:
parseInt (рядок, радікс);
рядок Значення для розбору Якщо аргумент рядка не є рядком, він перетворюється на рядок (за допомогою абстрактної операції 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"
і ви будете вільні від цього попереднього безперешкодного попередження. Це для лайнера eslint.
До ECMAScript 5 parseInt () також автоматично виявляв восьмеричні літерали, що спричиняло проблеми, оскільки багато розробників припускали, що провідна 0 буде ігнорована.
Тож замість:
var num = parseInt("071"); // 57
Зробити це:
var num = parseInt("071", 10); // 71
var num = parseInt("071", 8);
var num = parseFloat(someValue);