If you're seeing this message, it means we're having trouble loading external resources on our website.

如果你被网页过滤器挡住,请确保域名*.kastatic.org*.kasandbox.org 没有被阻止.

主要内容

复习:逻辑和 if 语句

以下是这个有关逻辑与 if 语句的教程所包括的内容。
我们经常希望能够在程序中 “有条件地” 做一些事情 - 我们希望能够说 “如果这件事成立,做 X,但如果另一件事成立,做 Y。” 就像我们早上醒来时 - “如果外面在下雨,那么我就带上雨伞,但是如果是晴天,我就戴墨镜。” 我们可以在程序中有条件的做事,用 if 语句if/else 语句 加上 条件表达式
if 语句 告诉程序执行一段代码,如果某一个条件成立的话。在以下的代码中,我们只有在 x 大于 0 时才输出一段信息:
var x = 5;

if (x > 0) {
  text('x is a positive number!', 200, 200);
}
因为 x 是 5,而 5 大于 0,我们会在画布上看到信息。如果我们把 x 改成 -1,我们就根本不会看到这个信息显示,因为 x 不会大于 0。
x > 0 是所谓的 条件表达式 - 意思就是一个判断true(成立)或false (不成立)的表达式。当一个值是 truefalse 时,我们就叫它 boolean 值(而不是数值或字符串)。例如,我们可以直接显示这个条件表达式:
text(x > 0, 200, 200); // 显示 "true"
我们还可以将它存入一个变量并显示:
var isPositive = x > 0;
text(isPositive, 200, 200);
我们便会说 isPositive 存储的是 boolean 值,因为它是 truefalse,决定于我们给 x 设定的值。
我们有很多创造判断为 truefalse的条件表达式的方法,因为我们有很多比较的运算符。以下是最常用的:
用以下的变量,这里是最常见的比较运算符,加上运用它们会是 true 的表达方式:
var myAge = 28;
运算符意思true 表达式
===严格相等myAge === 28
!==严格不相等myAge !== 2928 !== 29
>大于myAge > 2528 > 25
>=大于等于myAge >= 2828 >= 28
<小于myAge < 3028 < 30
<=小于等于myAge <= 2828 <= 28
一个常见的错误是把赋值运算符(=)和相等运算符(===)混淆,因为它们都用等号,但是它们其实很不一样。赋值运算符真的会改变变量的值,而相等运算符只会读取变量的值来看它是否等于某一个东西。例如:
var x = 2 + 2; // 赋值为 4

if (x === 4) { // 问 "这个是否等于 4?"
   text("yep, 2 + 2 = 4!", 200, 200);
}
我们有时候想要在一个条件表达式中组合多个比较,这就是为什么有 逻辑运算符。这些运算符让我们在程序中说例如 ”如果 x 和 y 两者都 true“ 或 ”如果 x 或者 y 至少一个 true“。
如果我们想要求两个条件都 true,可以用 && 运算符 ("和"):
var degreesOutside = 70;
var numberOfClouds = 50;
if (degreesOutside > 70 && numberOfClouds < 5) {
  text("Wear sun screen!", 200, 200);
}
我们经常在这里的程序中用这个来检查用户的鼠标是否在一个长方形内(为了模仿按钮),在此情况中我们需要多个 && 运算符:
rect(100, 50, 100, 100); 

mousePressed = function() {
    if (mouseX > 100 && mouseX < 200 && mouseY > 50 && mouseY < 150) {
      text("You pressed it!", 80, 75);
    }
};
如果我们只在乎至少一个条件 true,那么我们可以用 || 运算符 ("或"):
var degreesOutside = 70;
var numberOfClouds = 50;
if (degreesOutside > 70 || numberOfClouds < 5) {
  text("Wear sun screen if it's hot outside or there aren't many clouds!", 200, 200);
}
我们可以在同一个表达式中既用 && 又用 ||,如果我们有某一个很复杂的条件要检查。就要用括号来把表达式分组,以免程序对判断的顺序混淆:
var myAge = 28;
if ((myAge >= 0 && myAge < 3)  || myAge > 90) {
  println('You\'re not quite in your peak.');
}
现在让我们回到 if 语句。我们经常要在 if 条件不 true 的情况下执行一段代码 - 在此情况下,我们要加一个 else 语句
var age = 28;
if (age > 16) {
  println('Yay, you can drive!');
} else {
  println('Sorry, but you have ' + (16 - age) + ' years until you can drive.');
}
有时候我们要检查多个条件,并根据每一个干不同的事情,那么我们可以用else if
var age = 20;
if (age >= 35) {
  println('You can vote AND hold any place in government!');
} else if (age >= 30) {
  println('You can vote AND run for the Senate!');
} else if (age >= 18) {
  println('You can vote!');
} else {
  println('You have no voice in government!');
}
你可以检查任意多条件 - 只要保证每一个条件真的可以达到。要测试你的代码,试着改变你的变量,直到进到了每一段代码,以让自己了解一切事怎样运作的。
希望你现在已经可以看到,条件语句是编程的一个很重要的部分,它们让我们编写更强大而灵活的程序。

想加入讨论吗?

尚无帖子。
你会英语吗?单击此处查看更多可汗学院英文版的讨论.