验证提示输入是否为 JS 中的数字的最佳方法是什么?

What is the best way to validate if a prompt entry is a number in JS?

JS把所有的提示输入都变成了字符串。我想测试它是否是一个实际数字,如果是,则将类型转换为数字。最好的方法是什么?如果我使用 Number(target),它也会将任何字符串转换为 number 类型。

    var res = prompt('How long'); //input: "ABC" 
    typeof Number(res)
    >> "number"

在这种情况下,您可以借助正则表达式

let isNum = /^\d+$/.test(res);

isNum 中的结果将根据您的输入为真或为假。如果结果为真,那么您可以将其转换为数字

if (isNum)
  let num = parseInt(res)

// let res = +(prompt('How long') // + convert to number
if(res = +(prompt('How long'))){
  console.log('Its number : ', res);
}else{
  console.log("Its not a number");
}

实现这一目标的方法有多种,但最佳做法之一是:

首先,获取输入:

let result = prompt('How long');

将输入转换为数字:

let resultNumber = Number(result);

现在,是时候验证我们的 resultNumber:

if(!Number.isNaN(resultNumber)) {
  // It's a actual number  
} else {
  // It's not a number
}

注1:将字符串转成数字并不总是产生数字,NaN是那些转换的结果,我们举个例子

Number('false') // --> NaN

注2:如果数字是实际数字,则将其转换为数字类型,但在NaN的情况下,Number.isNaN()将检查一下。