2.4.2用Boolean比较数字

  可以用布尔值回答一些答案为yes或no的简单的关于数字的问题,例如,假设我们经营一个主题公园,其中一项游乐设施有年龄限制,乘客的身高至少要60英寸,否则他们可能会掉下来!当有人想要玩这个设施并且说出其身高时,我们需要知道该身高是否大于最低身高限制。

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

大于

  可以使用大于符号(>)来判断一个数字是否大于另一个数字,例如,判断乘客的身高(65英寸)是否大于身高限制(60英寸),可以把变量height设置为65,把变量heightRestriction设置为60,然后使用>符号比较两个数字:

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

  使用height>heightRestriction,要求JavaScript告诉我们,第一个值是否大于第二个值。在这个示例中,乘客的身高足够高。

  如果乘客的身高恰好是60英寸,那要怎么办?

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

  哦,不!乘客不够高。但是,如果身高限制是60,那么60英寸高的人难道不应该允许进入吗?我们需要修改这个条件,好在JavaScript有另一个操作符表示“大于或等于”。

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

  非常棒----60大于或等于60

小于

  和大于操作符(>)相反的是小于操作符(<),如果把游乐设施设计为只供小朋友乘坐,那么小于符号就可以派上用场。例如,假设该乘客的身高是60英寸,但是游乐设施对乘客的限制是不得超过48英寸:

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

  如果想要知道乘客的身高是否小于限制高度,就使用<符号,因为60不小于48,所以我们得到false(乘客的身高是60英寸,对于这个游乐设施来说,他太高了)。

  你可能猜到了,也可以使用<=操作符,它表示“小于或等于”:

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

  身高为48英寸的乘客仍然允许乘坐。

等于

  要搞清楚两个数字是否相等,使用三个等号(===),它的含义是“等于”。但是要注意三个等号(===)与一个等号(=)的区别,因为===表示“这两个数字相等吗?”,而=表示“把右边的值保存到左边的变量中”。换句话讲,===是问一个问题,而=是把一个值赋给变量。

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

  当使用=时,变量名必须放在左边,想要保存到变量中的值必须放在右边。而另一方面,===只是用来比较两个值是否相等,所以值放在哪一边都无所谓。

  例如,假设你正在和朋友Chico、Harpo和Groucho玩游戏,看看谁能猜到你的神秘数字5,为了使游戏变得简单,可以告诉朋友们,这个数字在1到9之间,然后再开始猜数字。首先,设置mySecretNumber等于5,你的第一位朋友Chico猜的是3(chicoGuess)。看看接下来会发生什么:

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

  变量mySecretNumber把神秘数字保存起来。变量chicoGuess、harpoGuess和grouchoGuess表示朋友们猜测的数字,使用===来判断每次所猜测的数字是否与神秘数字相等。第3位朋友Groucho猜对了,答案是5.

  当使用===判断两个数字时,只有两个数字相等才会得到true。因为grouchoGuess是5,而mySecretNumber也是5,所以mySecretNumber===grouchoGuess返回true。其他的猜测都和mySecretNumber不相等,所以返回的都是false。

  也可以使用===比较两个字符串或者两个布尔类型。如果使用===比较两种不同的类型,例如,比较字符串和数字,总会返回false。

两个等号

  还有一点容易让人搞混淆,就是另一个JavaScript操作符==(两个等号)。使用它来判断两个值是否相等,即使一个值是字符串,另一个值是数字,也可以比较。所有值都有类型。所以数值5和字符串“5”是不同的,即使它们看上去是一样。如果使用===来比较数值5和字符串“5”,JavaScript会告诉我们,它们是不相等的。但是,如果使用==来比较这两个值,JavaScript会告诉我们,它们是相等的。

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

  关于这一点,你可能会认为:“看上去使用两个等号要比三个等号更容易一些。”然而,一定要小心,因为两个等号可能很容易令人混淆。例如,你认为0会等于false吗?0会等于字符串”false”吗?当使用两个等号时,0等于false,但是不等于字符串”false”。

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

  这是因为,当JavaScript试图用==比较两个数字时,首先会尝试把这两个值当作相同的类型,这种情况下,它把布尔值转换成一个数字。如果把布尔值转换成数字,false就变成了0,true变成了1.所以,当输入0==false时,你会得到true。

因为这个怪异的原因,目前请坚持使用===。

试试看

  电影院经理要求你用JavaScript实现他们所要建立的一套新的自动化系统。他们想要能够判断是否允许某人观看PG-13级别的电影。

  规则是,如果年龄大于或等于13岁,就允许进入影院。如果年龄小于13岁,但是有成年人陪伴,也允许进入影院。否则,就不允许观看该电影。

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

  使用变量age和accompanied来完成这个示例,以判断是否允许这个12岁的少年观看这部电影。尝试换一些值(例如,把age设置为13,把accompanied设置为false),看看你的代码是否仍然能够得到正确答案。

《javascript-少儿编程》第二章类型与变量之用Boolean比较数字

参考文献:《JavaScript for kids》By Nick Morgan 来源:http://www.allitebooks.org


本站内容未经许可,禁止任何网站及个人进行转载。