"Number"函数在 JavaScript 中做什么?


var num = Number(prompt("Pick a number", "0"));
if (num < 10) 
    alert("Small");  
else if (num < 100) 
    alert("Medium");  
else 
    alert("Large");  

我只是对Number在此代码中执行的操作感到困惑。如果我把它变成这样会发生什么:

var num = prompt("Pick a number", "0");  

Number将传递的值转换为数字值。例子:

> Number(10)
10
> Number("10")
10
> Number(true)
1
> Number("0x11")
17
> Number("foo")
NaN

它执行到数字的显式类型转换。

还有 StringBoolean 执行基本相同的操作,但转换为字符串和布尔值。

如果我把它变成这样会发生什么...

prompt将始终返回一个字符串值。但是,在您的特定示例中,它实际上不会有什么不同,因为关系比较运算符 ( < ( 将隐式执行相同类型的转换。即

a < 10
// is the same as
Number(a) < 10

不过,我会说执行显式类型转换是一种很好的做法,因为它使代码的其余部分更清楚地表明您期望的类型。


注意:也可以用new调用Number,即 new Number(...),这将返回一个数字对象而不是基元数字值。这很少使用。

最新更新