Нет ни одной встроенной операции, предоставляемой по умолчанию в JavaScript, которая соответствовала бы разумному определению «эта строка - число» (на мой взгляд, в любом случае).Вы можете приблизиться с помощью Number
, унарного +
или неявного преобразования (просто передав строку непосредственно в isNaN
), с оговоркой, что все они делают то же самое, что включает в себя ""
как 0
:
// Number
console.log(!isNaN(Number("10000"))); // true
console.log(!isNaN(Number("100T0"))); // false
console.log(!isNaN(Number(""))); // true (!)
// Same as implicit (here triggered with a unary +)
console.log(!isNaN(+"10000")); // true
console.log(!isNaN(+"100T0")); // false
console.log(!isNaN(+"")); // true (!)
// Same as implicit
console.log(!isNaN("10000")); // true
console.log(!isNaN("100T0")); // false
console.log(!isNaN("")); // true (!)
Мой ответ на связанный вопрос подробно рассматривается в ваших вариантах.
Следовательно, вы можете сделать регулярное выражение (не забудьте указать научную запись!) или чек на ""
заранее:
function toNumber(str) {
str = String(str).trim();
return !str ? NaN : Number(str);
}
console.log(!isNaN(toNumber("10000"))); // true
console.log(!isNaN(toNumber("100T0"))); // false
console.log(!isNaN(toNumber(""))); // false