第三天:逻辑分支、if与switch特点和应用

一.语句(一个关键字或者多个关键字组成的代码片段)

1.顺序结构

顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的(上-下,左-右)

  console.log(1);
  console.log(2);
  console.l0g(3); //这里报错,报错整个程序停止执行了
  console.log(4);

 2.选择结构

  选择结构表示程序的处理步骤出现了分支,需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。

  var str = prompt("请输入字符串:");
  if (str === "累了困了") {
    console.log("去放松一下");
  } else {
    console.log("好好学习");
  }

3.循环结构

  循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。

  //document.write()表示到页面上并且标签可以被转译  
  document.write("<select>");  
  for (var i = 1900; i <= 5000; i++) {
    document.write("<option>" + i + "</option>");
  }
  document.write("</select>");

重点:包含在{}里面的一条或者多条语句,称之为代码块。

  一.if分支语句

  if语句的条件可以是任意的表达式,但是结果一定是布尔值(ECMAScript会自动调用Boolean转换函数将这个表达式的结果转换为一个布尔值)

  条件结果为真,执行if语句的语句块。 条件为假执行else语句块

1.if语句基本结构 - 单分支

  if (条件) {

    条件成立执行的代码块;

  }

  2.if语句基本结构 - 双分支

  if (条件) {

    条件成立执行的代码块;

  } else {

    条件不成立执行的代码块;

  }

  3.if语句基本结构 - 多分支(三种或者三种以上的情况)

  if(条件1){

    条件1成立执行的代码块;

  }

  else if(条件2){

    条件2成立执行的代码块;

  }

  else if(条件3){

    条件3成立执行的代码块;

  }

  ......

  else{

    其他条件执行的代码块

  }

 

一.if语句的特点

  1.if语句的条件可以是任意的表达式,但结果一定是布尔值.

  2.尽量将最大的可能给if语句,因为if语句满足,else形成短路操作(else可以省略).

  测试案例:输入年份,计算某一年是否是闰年(闰年能被4整除且不能被100整除,或能被400整除);  判断是数字,并且是四位的数字,判断是否是闰年

  var year = prompt("请输入四位的年份:");
  // 判断是数字,并且是四位的数字
  if (!isNaN(year) && year >= 1000 && year <= 9999) {
  // 判断是闰年还是非闰年
    if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
      alert("是闰年");
    } else {
      alert("非闰年");
    }
  } else {
    alert("你输入的数字格式有误");
  }

switch语句

  switch 语句与 if 语句的关系最为密切,而且也是在其他语言中普遍使用的一种流程控制语句。

  优势:switch非常适合多分支语句,多分支的情况下优于if语句。

  1.switch语句的基本控制结构

  switch是多分支语句的关键字,定义switch语句。

  case表示每一种情形,原理是对比switch括号里面的值和case后面的值是否全等,如果全等,执行case后面对应的语句块.

  break关键字表示switch结束,如果没有break,case具有穿透力,继续执行case后面的其他代码块。

  default关键字表示case之外的情形,可以省略不写,类似if语句中else。

  switch (值) {//value:值

    case 值:

      满足case执行的代码块;  break;

    case 值:

      满足case执行的代码块;  break;

    case 值:

      满足case执行的代码块;  break;

      case之外的情形

  }

  核心:对比if和switch区别

  上面的案例对于if语句,按照顺序,假设输入的是3,必须走3步得到目标,而switch任何时候都是一步到位。

  switc

  一般情况下,这两个语句是可以相互替换的;

  switch语句通常处理case为比较确定的值的情况,而if...else...语句更加灵活,常用于范围判断;

  switch语句进行条件判断后直接执行对应的case语句,而if语句根据条件按照顺序执行;

  所以当分支比较少的时候if语句的执行效率比switch语句高;反之switch效果更高。

  测试案例:输入分数,判定成绩等级(if和switch两种写法)(5个等级0-100)

  var score = +prompt("请输入一个分数:");
  if (score === 100) {
    console.log("A");
  } else if (score < 100 && score >= 90) {
    //不允许使用90<=score<=100
    console.log("B");
  } else if (score < 90 && score >= 80) {
    console.log("C");
  } else if (score < 80 && score >= 60) {
    console.log("D");
  } else if (score < 60 && score >= 0) {
    console.log("E");
  } else {
    console.log("输入有误");
  }

  var score = +prompt("请输入一个分数:");
  switch (true) {
    case score === 100:
      console.log("A");
      break;
    case score < 100 && score >= 90:
      console.log("B");
      break;
    case score < 90 && score >= 80:
      console.log("C");
      break;
    case score < 80 && score >= 60:
      console.log("D");
      break;
    case score < 60 && score >= 0:
      console.log("E");
      break;
    default:
      console.log("输入有误");
  }

  三目运算符,三元运算符?:

  1.基本结构

  条件?语句1:语句2

  解读:问号前面的条件如果满足(true),执行语句1,否则执行语句2

  注意:语句1和语句2是一条语句,不是语句块,取代简单的分支语句。

  2.特点

  2.1.整个运算符带有返回值。

  var result = 条件?语句1:语句2;

  2.2.三目运算符可以嵌套使用,三目运算符里面有三目运算符...

  //案例一:输入一个数字,如果数字小于10,前面补0

  var num = prompt("请输入一个数字:");
  if (num < 10) {
    console.log("0" + num);
  } else {
    console.log(num);
  }

  //案例二:声明三个数字,输出最大的那个数字。

    var a = 13;
    var b = 34;
    var c = 24;
    var max = a > b ? (a > c ? a : c) : b > c ? b : c;
    console.log(max);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骏浩

02年的前端小白

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值