
3.2.2 关于花括号的说明
何时以及哪里使用花括号({})是重要的问题。漏掉花括号可能导致程序崩溃、一点不运行或者以预想不到的结果运行(可能是最糟糕的情况)。当遗漏开始或结束花括号时,由于你的程序将不会运行或者返回错误,所以你很可能就会知道这个错误。然而,如果遗漏一组需要的花括号,那么直到运行这个程序并且得不到预期结果时,你才能意识到存在这个问题。例3.2将为前面的例子添加一条语句,说明花括号什么时候一定要有和什么时候是可选的。
例3.2 有没有花括号是不同的 在这个例子中,我们将把另一行代码加入if语句。部分(a)使用花括号括起两条输出语句使之成为当满足第8行测试条件时要执行的语句部分。
部分(a)
最初的页面看起来像这样:
当用户为温度录入15时,输出看起来像这样:
但是,如果用户为温度录入45,则不发生事情。
部分(b)不使用花括号,其后果将在输出中显示出来。
部分(b)
当用户为温度录入15时,输出看起来与部分(a)一样。然而,如果用户为温度录入45时,输出是:
发生了什么事?花括号应该括起满足测试条件时要执行的所有语句。在部分(a)中这意味着如果用户录入的温度低于32,那么将执行部分(a)的第10和11行(即两条document.write()语句)。然而,当除去花括号(如部分(b)所示)时,如果用户录入的温度低于32,那么程序将执行部分(b)的第9行,即第一条document.write()语句。然后,前往执行下一行(即第10行)代码,即第二条document.write()语句。如果录入的温度低于32,那么这个程序执行正确。然而当用户录入一个较高温度时,那么将跳过这条if子句。若没有花括号,将假定if子句只有一条语句,因此跳过第9行。然而,第10行不是if子句的一部分,而是下一条要执行的语句。这就是为什么不管录入什么温度,总是要执行第二条document.write()语句的原因。
如果你不能确定是否要用花括号括起语句,那么你最好宁愿犯过于谨慎的错误。在if语句中使用花括号括起一条语句不会导致程序代码出错,但是遗漏花括号却能引起不想要的结果。
3.2节检查点
3.7 定义if...子句的测试条件。
3.8 测试条件的可能值是什么?
3.9 如果把下列代码片断放入一个程序中并运行,而age的值是10,那么将显示什么?
3.10 修改检查点3.9的代码,使得如果孩子不超过16岁,就不显示任何信息。
3.11 修改检查点3.9的代码,使得年龄等于或大于16岁的孩子能够获得一张驾驶学习执照。