Мой вопрос почему эта функция не может быть упрощена:
function isNumeric(n) {
return isFinite(n)
}
Он не может, нет, вы хотите, чтобы parseFloat
там, если есть какой-то шанс n
не может быть числом, чтобы начать с. Но это может быть упрощена:
function isNumeric(n) {
return isFinite(parseFloat(n));
}
... потому что isFinite(NaN)
ложна, что и ваша функция возвращается для чисел в любом случае не поддается синтаксическому анализу.
Стоит отметить, что parseFloat
остановится на первом недопустимого символа и вернуть то, что число он нашел до этого момента, так parseFloat("123abc")
является 123
, не NaN
. Если вы хотите проверить, что вся строка может быть разобран правильно с плавающей точкой, используйте +
или Number()
:
function isNumeric(n) {
return isFinite(+n); // Or: return isFinite(Number(n));
}
Теперь, если вы знаете наверняка, что n
будет всегда уже быть числом (не булево или строка или что-то еще), то да, вы могли бы пропустить этап синтаксического анализа.
Это не требуется, потому что если n не определено, это приведет к ошибке ссылки – gardni
Так что это можно упростить правильно? Я нахожу, что учебное пособие находится на http://javascript.info/tutorial/number-math – bean
@ Нико ах Я неправильно понял проблему (просто подумал проверить ввод как номер). –