条件语句

条件语句用于根据条件判断,以决定执行哪些命令。这些条件可以是各种计算结果或者是表达式。

if 语句

使用 if 语句,可以根据是否符合条件,决定要不要执行花括号{...}内的命令。
格式为:if(条件){ 代码 }
如果签到次数为 0 ,则增加 100 金钱:
if (属性.签到次数 === 0) {
  物品.金钱 = 物品.金钱 + 100
}
这里,我们比较签到次数和 0,当签到次数等于 0 时,条件为真,并执行增加金钱的命令。
=== 的意思是判断两边是否等于
!== 的意思是判断两边是否不等于

else 语句

通过else {执行语句},当 if 语句不满足条件时,执行 else 后的 {} 内的语句。
让玩家签到次数+1。之后,如果玩家签到次数大于 100 ,则增加 10 经验。否则,增加 5 经验:
属性.签到次数 = 属性.签到次数 + 1;
if (属性.签到次数 > 100) {
  属性.经验 = 属性.经验 + 10;
} else {
  属性.经验 = 属性.经验 + 5;
}
其中,<的意思是判断左边是否小于右边,>是大于,<=是小于等于,>=是大于等于。和数学中大小判断的符号 ≥ 长的差不多。
使用 if...else 语句,如果成立,则执行第一个花括号内的操作。如果不成立,则执行第二个花括号内的操作。
上面这些代码,也可以写成:
属性.签到次数 = 属性.签到次数 + 1;
if (属性.签到次数 > 100) {
  属性.经验 = 属性.经验 + 10;
}
if (属性.签到次数 <= 100) {
  属性.经验 = 属性.经验 + 5;
}
如果需要连续测试多个条件时,可以使用 else if (条件) {执行语句}。
根据不同的金钱数量,给予不同的头衔:
if (物品.金钱 > 10000) {
  属性.头衔 = '大富翁'
} else if (物品.金钱 > 5000) {
  属性.头衔 = '富豪'
} else if (物品.金钱 > 1000) {
  属性.头衔 = '小康'
} else {
  属性.头衔 = '平民'
}

组合多个条件

多个条件之中有一个成立 ||

||的意思是“或”,只要它连接的任意一个条件满足,就执行 if 里的代码。
格式:条件1 || 条件2 || 条件3...
如果金钱小于 100,或者体力小于 40,心情就会变为不开心:
属性.心情 = '开心';
if (属性.金钱 < 100 || 属性.体力 < 40) {
  属性.心情 = '不开心';
}

多个条件都要成立 &&

&&的意思是“且”,只有它连接的所有条件成立,才能执行 if 里的代码。
格式:条件1 && 条件2 && 条件3...
如果金钱大于等于 1000,且体力大于等于 80,心情就会变为很开心:
属性.心情 = '开心';
if (属性.金钱 >= 1000 && 属性.体力 >= 80) {
  属性.心情 = '很开心';
}

&&|| 同时使用

&&的优先级高于||,不过你可以通过括号改变优先级。
如果金钱大于等于 1000 且体力大于等于 80,或者属性『模式』的值为"作弊模式",则心情为很开心:
属性.心情 = '开心';
if ((属性.金钱 >= 1000 && 属性.体力 >= 80) || 属性.模式 === '作弊模式') {
  属性.心情 = '很开心';
}

让条件相反

通过英文感叹号!对后面的条件取反。如果后面的条件成立,加上!后的条件则不成立。
此外,取反的优先级比大于、等于、小于、且、或这些符号都要高。在使用时,要通过括号提升后面的优先级。
下面两个代码的效果相同,都是判断签到次数是否不等于 0
if (!(属性.签到次数 === 0)) {
  物品.金钱 = 物品.金钱 + 10
}
if (属性.签到次数 !== 0) {
  物品.金钱 = 物品.金钱 + 10
}

常见错误

错误使用 ||

当判断一个值是否等于多个值时,初学者常常会把“||”和数值连用,例如,判断属性『等级』是否等于 1  2  3 当中的一个值:
if (属性.等级 === 1 || 2 || 3) {
  // 错误写法
}
比较符号(“<”“>”“===”等)的优先级大于组合符号(“||”和“&&”),因此应当按照下面的写法:
if (属性.等级 === 1 || 属性.等级 === 2 || 属性.等级 === 3) {
  // 正确写法
}

将等于比较号(===)写成等号(=)

当两个值是否相等时,初学者有可能会把等于比较号(===)写成等号(=),例如,判断属性『签到次数』是否等于 0:
if (属性.签到次数 = 0) {
  // 错误写法
}
这么做会导致将 0 赋值给属性『签到次数』,使签到次数每次都为 0。应当按照下面的写法:
if (属性.签到次数 === 0) {
  // 正确写法
}