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");
答案 0 :(得分:4)
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
尽管如此,我还是说执行显式类型转换是一种很好的做法,因为它使代码的其余部分更清晰,你会期望什么类型。
注意:也可以使用Number
来呼叫new
,即new Number(...)
,但是会返回一个数字对象而不是原始数值。这很少使用。