【Day10】「如果肚子饿了,就吃香蕉」--流程判断逻辑

tags: JavaScript

「如果肚子饿了,就吃香蕉」--流程判断逻辑

最简单的流程控制,就是「如果」符合某个条件,就去做某件事,也就是if...else这样的程序语法。

就像「如果肚子饿了,就吃香蕉」,猴子吗?

例如:「打不过,逃!」这是江南七怪的老五南樵子在学生郭靖要出江湖闯荡时,提醒郭靖的话。如果满足「打不过」这个条件,就做「逃」这个动作。

if (条件式){
	//条件成立(true)的话,执行{ }区块内的内容
}
else {
	//如果条件不成立(false),执行{ }区块中的内容
}

如果条件不只一个,可以使用 else...if 来新增条件。

if (条件式 1){
	//条件1成立(true)的话,执行{ }区块内的内容
}
else if (条件式 2){
	//条件2成立(true)的话,执行{ }区块内的内容
}
else if (条件式 3){
	//条件3成立(true)的话,执行{ }区块内的内容
}
else {
	//如果上面的条件都不成立(false),执行{ }区块中的内容
}

回到郭靖的例子:

var fight = '打到对方吐血';
if ('打不过' === true) {
	fight = '逃';
}

我想随机选出1到7之间的数字,用来表示江南七怪的排行,例如数字等於1就印出「飞天蝙蝠--柯镇恶」,数字等於2就印出「妙手书生--朱聪」,依此类推。

Math.random() 会随机产生 0 到 1 之间的小数。 而 Math.ceil(x) 会将x无条件进位。

//Math.random() 会随机产生 0 到 1 之间的小数。 而 Math.ceil(x) 会将x无条件进位。

if(Math.ceil(Math.random()*7)===1){
  console.log('飞天蝙蝠--柯镇恶');
}
else if (Math.ceil(Math.random()*7)===2){
  console.log('妙手书生--朱聪');
}
else if (Math.ceil(Math.random()*7)===3){
  console.log('马王神--韩宝驹');
}
else if (Math.ceil(Math.random()*7)===4){
  console.log('南山樵子--南希仁');
}
else if (Math.ceil(Math.random()*7)===5){
  console.log('笑弥陀--张阿生');
}
else if (Math.ceil(Math.random()*7)===6){
  console.log('闹市侠隐--全金发');
}
else{
  console.log('越女剑--韩小莹');
}

写了这麽落落长的一段,看得眼都花了,if .... else ....也判断了7次,就效能上来说比较差。

JavaScript还有另一种的switch条件判断式,适合这样的情况。

switch(Math.ceil(Math.random()*7)){
  case 1:
    console.log('飞天蝙蝠--柯镇恶');
    break;
  case 2:
    console.log('妙手书生--朱聪');
    break;
  case 3:
    console.log('马王神--韩宝驹');
    break;
  case 4:
    console.log('南山樵子--南希仁');
    break;
  case 5:
    console.log('笑弥陀--张阿生');
    break;
  case 6:
    console.log('闹市侠隐--全金发');
    break;
  case 7:
    console.log('越女剑--韩小莹');;
    break;
  default:
    console.log('六怪阵亡,只剩老大飞天蝙蝠柯镇恶');
    break;
}

switch括号中可以放入「运算式」、「变数」或「值」,如果符合case後面所列出来的条件,就执行那个case区块的程序叙述。如果都不符合则执行default区块的程序叙述。

当满足case列出来的条件,执行完程序叙述,break指令会中指流程判断,不去执行後面的case条件判断。


<<:  Google Cloud SDK

>>:  Day2-Start to go

[DAY-22] 填补知识缺口 寻找导师 持续学习

当个成功的 工作人! 我一直认为 不要对公司忠诚 公司想要忠诚的人 养只可爱的拉不拉多就好 BUT ...

JavaScript Day22 - setTimeout、setInterval

setTimeout setTimeout:定时器,只执行一次,属於非同步,因此就算设定 0 秒执行...

D17 下载功能改进

我将models内原本FileField的upload_to参数取消让他储存到预设的位置 这样在存入...

网站不想你爬

这边想说一下,关於上一篇有讲到我利用superagent()来获得网站资讯,结果抓取失败。这是因为不...

我们的基因体时代-AI, Data和生物资讯 Day02- 机器学习在生物资讯中之应用

上一篇我们的基因体时代-AI, Data和生物资讯 Day01- 超越摩尔定律的资料增长介绍了生医领...