Вступление: Писал проверку на то что вводит пользователь, реализовывал через input type = 'text', однако потом решил попробовать через prompt и результат один и тот же.
Проблема: проверял через Number.isInteger(x); Если число x введено через input или prompt и далее превращается в целое число parseInt(x). То Number.isInteger(x) покажет false. Напротив, если число изначально объявить let x = 76, то Number.isInteger(x) - true.
n = prompt();
parseInt(n, 10);
console.log(Number.isInteger(n)); //false
n = 67;
console.log(Number.isInteger(n)); //true
Вопрос: Почему так происходит? Как от этого избавиться?
В вашем коде есть ошибка, parseInt не изменяет переданное значение, а возвращает новое. В вашем случае при первой проверке n
является строкой.
Исправленная версия:
let n = parseInt(prompt(), 10);
console.log(Number.isInteger(n)); //true
n = 67;
console.log(Number.isInteger(n)); //true
В Вашей функции Вы задаёте prompt
переменной n.
Дальше Вы проводите перевод в число, но не задаёте ей переменную.
Чтобы всё работало - воспользуйтесь:
n = prompt();
n = parseInt(n, 10); // Присваиваем переменной n значение перевода в число.
console.log(Number(n));
console.log(Number.isInteger(n)); //false
n = 67;
console.log(Number(n));
console.log(Number.isInteger(n)); //true
Функция parseInt
пытается распарсить строку в число. Т.е. она довольна не прихотлива и, например значение 23gff
превратит в 23
.
console.log(parseInt('21fgf', 10), Number.isInteger(parseInt('21fgf', 10)));
console.log(parseInt('21.3', 10), Number.isInteger(parseInt('21.3', 10)));
console.log(parseInt('21,32', 10), Number.isInteger(parseInt('21,32', 10)));
console.log(parseInt('21', 10), Number.isInteger(parseInt('21', 10)));
Это не то поведение, какое вы ожидаете, как мне кажется.
Что бы этого избежать, надо строку преобразовать в число с помощью Number
.
console.log(Number('21fgf'), Number.isInteger(Number('21fgf')));
console.log(Number('21.3'), Number.isInteger(Number('21.3')));
console.log(Number('21,32'), Number.isInteger(Number('21,32')));
console.log(Number('21'), Number.isInteger(Number('21')));
нужно сделать так чтобы если содержимое страницы больше чем 100% высоты экрана позиция футера менялась на static, а если меньше чем сто и еще минус...
Есть object, нужено запушить его values в [], если key === 'name'