Функція зворотного виклику в Array.mapмає три параметри:
З тієї ж сторінки Mozilla, яку ви пов’язали:
Зворотний виклик викликається трьома аргументами: значенням елемента, індексом елемента та об'єктом масиву, що пересувається. "
Отже, якщо ви викликаєте функцію, parseIntяка насправді очікує два аргументи, другим аргументом буде індекс елемента.
У цьому випадку ви закінчили дзвінки parseIntпо черзі з радіусами 0, 1 і 2. Перший - це те саме, що не подає параметр, тому він за замовчуванням базується на вході (в цьому випадку база 10). База 1 - неможлива база чисел, а 3 - недійсне число в базі 2:
parseInt('1', 0); // OK - gives 1
parseInt('2', 1); // FAIL - 1 isn't a legal radix
parseInt('3', 2); // FAIL - 3 isn't legal in base 2
Тому в цьому випадку вам потрібна функція обгортки:
['1','2','3'].map(function(num) { return parseInt(num, 10); });
або з синтаксисом ES2015 +:
['1','2','3'].map(num => parseInt(num, 10));
(В обох випадках найкраще явно надати радіакс, parseIntяк показано, тому що в іншому випадку він здогадується про радіус на основі вхідних даних. У деяких старих браузерах провідний 0 змусив його вгадати восьмерику, що, як правило, було проблематичним. Це все одно буде вгадайте шістнадцятковий, якщо рядок починається з 0x.
.map(parseFloat)оскільки він бере один параметр.