就像大家一直在说的那样,prompt
返回一个字符串,因此需要对其进行转换。有很多方法可以做到这一点,其中一些已经提到过:
parseInt('123')
parseFloat('123')
Number('123')
这些可能是最常见的,并且取决于上下文也很可能是最清晰和最直观的方法。还有一些非常简洁和有趣的方法可以将字符串转换为数字,具体取决于您想要哪种数字。例如,要将字符串中的数字转换为浮点数,您可以在其前面加上+
运算符:
+'1.23'
这看起来真的很违反直觉,特别是因为4 + '1.23'
will 实际上 return 41.23
。发生什么了?好吧,+
运算符,当用作一元运算符时(即,它在右侧只有一个操作数)将始终将操作数的值转换为数字。比较这两个(在 javascript 控制台中尝试):
4 + '1.23' // returns 41.23
4 + +'1.23' // returns 5.23; the second + is a unary operator
在诸如此类的人为示例中,它的阅读效果确实很差,因此您可能不想在任何地方使用此技巧。但是在您的代码中,它读起来很好:
var age = +prompt("What's your age?")
var dog = age + 7;
var leapyear = age / 4;
var plusFive = age + 5;
如果您了解一元加运算符的工作原理(它真的不是火箭手术),那么您可以获得一些简洁但非常易于理解的结果。
一元运算+
符将始终将值转换为 a Number
,即浮点数。现在,您可能需要一个整数,在这种情况下,您可以使用按位非运算符两次,如下所示:
4 + ~~'1.23' // returns 5; note the double operator
此运算符首先将值转换为整数,然后返回值的按位补码,这意味着所有位都被反转。使用它两次意味着我们得到补码的补码,即原始值,但这次是整数而不是浮点数。
希望这是有益的!