如何检查节点js中的数据types – 专门用于整数
我尝试以下检查数据types(专门为整数),但不能正常工作。
var i = "5"; if(Number(i) = 'NaN') { console.log('This is not number')); }
我想了两种方法来testing一个值的types:
方法1:
您可以使用isNaN
javascript方法,该方法确定值是否为NaN 。 但是因为在你的情况下,你正在testing一个转换为string的数字值,所以Javascript试图猜测值的types并将其转换为不是NaN
的数字5。 这就是为什么如果你console.log
结果,你会惊讶的是代码:
if (isNaN(i)) { console.log('This is not number'); }
不会返回任何东西。 为此,更好的select是方法2。
方法2:
您可以使用javascript typeof方法来testingvariables或值的types
if (typeof i != "number") { console.log('This is not number'); }
请注意,我使用双等号运算符,因为在这种情况下,值的types是一个string,但JavaScript内部将转换为数字。
将值强制为数字types的更强大的方法是使用作为新的Ecmascript 6(和谐)提案的一部分的Number.isNaN,因此不被不同的供应商广泛支持。
我用这种方式,它的工作正常
quantity=prompt("Please enter the quantity","1"); quantity=parseInt(quantity); if (!isNaN( quantity )) { totalAmount=itemPrice*quantity; } return totalAmount;
你的逻辑是正确的,但你有两个错误,显然每个人都错过了:
if(Number(i) = 'NaN')
改为if(Number(i) == NaN)
NaN
是一个常数,你应该使用双等号来比较,一个单一的是用来赋值给variables。
我只是在node.js v4.2.4中做了一些testing(但在任何javascript实现中都是如此):
> typeof NaN 'number' > isNaN(NaN) true > isNaN("hello") true
惊喜是第一个NaN的types是“数字”,但这是如何定义在JavaScript中。
所以下一个testing会带来意想不到的结果
> typeof Number("hello") "number"
因为Number(“你好”)是NaN
以下函数按预期得到结果:
function isNumeric(n){ return (typeof n == "number" && !isNaN(n)); }
你可以试试这个isNaN(Number(x))
,其中x是string或数字之类的东西
如果您想知道是否可以将“1”或“1”转换为数字,则可以使用以下代码:
if (isNaN(i*1)) { console.log('i is not a number'); }