购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.11 案例:小小加法计算器

请使用JavaScript做一个加法计算器:先让用户依次输入两个数字,然后显示这两个数字的和。

使用prompt()函数可以接收用户输入的数字,本题的实现思路也就清晰了:首先调用两次prompt()函数,分别接收用户输入的两个数字;然后计算它们的和;最后弹出对话框显示结果。

编写下面的代码:

这段代码看似没有问题,实际上有一个bug。运行代码后,依次输入数字1和数字2,正常情况下弹出的对话框中应显示数字3,但结果是对话框中显示字符串12,如图3-3所示。

图3-3 代码出现了bug

为什么对1和2求和会得出结果12呢?原因很简单:加号运算符不仅有相加的含义,当遇见字符串时,它也有拼接字符串的含义。那么,当用户输入的值被JavaScript认为是字符串类型时,加号运算符将1和2进行拼接,则输出12。

此时,可以使用显式类型转换的方法将数据类型进行转换,将字符串转换为数字。使用Number()函数可以将字符串转换为数字,将上述代码改为:

这段代码就是正确的。运行代码,依次输入数字6和数字9,此时弹出的对话框显示数字15,代码运行成功,如图3-4所示。

图3-4 代码运行成功

这个案例虽然简单,但是展示了计算机编程的基本模式:先获取用户输入的参数,然后计算机进行计算处理,最后向用户展示结果,如图3-5所示。

图3-5 计算机编程的基本模式

需要注意的是,初学者可能将代码写成这样:

这段代码将两条Number()语句合并在了一起,这是错误的。因为语句Number(a+b)会先计算a+b的值,此时是两个字符串相加,比如,输入数字1和数字2将得到字符串“12”。再进行Number()转换,也就是将字符串“12”变为数字12。

因此书写代码的时候要非常清楚代码会如何执行,避免类似的错误。

但是将上述代码改为下面这样是正确的:

只要确保在求和运算之前将两个字符串变为数字,那么代码都是正确的。

上面是使用显式类型转换的方式来处理该需求的。实际上我们还可以使用另一种更巧妙的方式来处理,那就是使用隐式类型转换方式。通过上面的学习可以得知:数字1和任何类型的值相乘都会将该值转换为数字类型,那么就可以写出下列代码:

这段代码巧妙地确保了在求和运算之前将字符串变为数字,因此运行代码后输出的结果依旧是正确的。 S87EPuzq9SP0LOi7KBCQbkcFMjvnhsznwaDVRv2MFge85LbckzFBWDVYzwdiE0ES

点击中间区域
呼出菜单
上一章
目录
下一章
×