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
它执行到数字的显式类型转换。
还有 String
和 Boolean
执行基本相同的操作,但转换为字符串和布尔值。
如果我把它变成这样会发生什么...
prompt
将始终返回一个字符串值。但是,在您的特定示例中,它实际上不会有什么不同,因为关系比较运算符 ( <
( 将隐式执行相同类型的转换。即
a < 10
// is the same as
Number(a) < 10
不过,我会说执行显式类型转换是一种很好的做法,因为它使代码的其余部分更清楚地表明您期望的类型。
注意:也可以用new
调用Number
,即 new Number(...)
,这将返回一个数字对象而不是基元数字值。这很少使用。