F шестнадцатеричный.
Второй параметр - тип последовательности чисел. Например, parseInt(5, 2);
вернет 101
, поскольку возвращает число в двоичном виде (2 числа, 1 и 0). Второй аргумент может быть 2 (двоичный), 8 (восьмеричный) и 16 (шестнадцатеричный). Причина, по которой ваш parseInt('F', 16);
возвращает число, состоит в том, что в этой последовательности 16 чисел (или 10 цифр, 0-9 и 5 букв, представляющих числа. A = 10, B = 11, C = 12, D = 13, E = 14, F = 15
).
var number = 'F';
console.log(parseInt(number, 2)); // F isn't part of sequence (0,1)
console.log(parseInt(number, 8)); // F isn't part of sequence (0-7)
console.log(parseInt(number, 16)); // F is 15, as defined in answer
Следовательно, F
не считается числом в любом другом наборе, кроме 16
. И typeOf, который возвращает NaN, не равен числу. Следовательно, он должен работать идеально, если условие poppin === 'h'
было удалено (вот в чем проблема).
var nums = ['F', 20];
for (n of nums) {
// Your code being run with two different values
if (isNaN(n)) {
console.log("Not a number");
} else if (typeof parseInt(n) === 'number') {
console.log("A number");
}
}