逻辑分支
条件控制语句
概述:
程序控制语句所有的语言都具备 ,主要分为循环控制语句(循环执行)和条件控制语句(根据不同的条件执行不同的内容)
常用的条件控制语句
-
if else (传递条件表达式 根据条件表达式来判断)
-
switch case (空间复杂度大于if else 时间复杂度小于if else 传入一个值 根据来进行匹配)
if else
if(条件表达式){ //条件满足执行的内容 }else{ //条件不满足执行的内容 }
示例
判断一个数值是否奇数还是偶数
//prompt 弹窗输入框返回的是你的输入值 他的类型是string var n = prompt('请输入你需要验证的数值') if (n % 2 == 0) { console.log('是偶数') } else { console.log('是奇数') }
else if 多条件
//else if //用于判断的方法 isNaN if(isNaN(Number(n))){ console.log('输入出错') }else if (n % 2 == 0) { console.log('是偶数') } else { console.log('是奇数') }
if else 只会进入第一个找到的满足条件的内容
//if else 只会进入其他的第一个满足的条件 后续的不执行 if(2>1){ console.log('进来了') }else if(3>2){ console.log('来玩玩') }
示例2
输入的范围为100-999 判断一个数是否为水仙花数 (153 1的三次方+5的三次方+3的三次方 = 153)
var n = prompt('请输入100-999之间的数值') if(n>=100 && n<=999){ //if else嵌套 //取每一位的值 var a = n%10 //个数 var b = parseInt(n%100/10)//十位 var c = parseInt(n/100)//百位 if(a*a*a + b*b*b + c*c*c == n){ console.log('是水仙花数') }else{ console.log('不是水仙花数') } }else{ console.log('输入出错') }
if else的嵌套
if else 允许多层嵌套 但是建议嵌套层级不要超过俩层
if(条件表达式){ //true的时候走的 if(条件表达式){ .... }else{ //false的时候走的 } }else{ //false的时候走的 }
示例
判断输入的数值的奇偶
var n = prompt('请输入你需要验证的数值') //用于判断的方法 isNaN if(!isNaN(Number(n))){ if (n % 2 == 0) { console.log('是偶数') } else { console.log('是奇数') } }else { console.log('输入出错') }
输入一个数 判断是否为3的倍数 以及是否是15的倍数(1-999)
// 输入一个数 判断是否为3的倍数 以及是否是15的倍数(1-999) var printIn = prompt('请输入1-999之间的数值') if(printIn >= 1 && printIn <= 999){ //取余3 取余15 if(!(printIn % 3)){//值为0的情况下进入 整除3 console.log('他是3的倍数') //是否为15的倍数 if(printIn % 5 == 0){ console.log('他是15的倍数') } }else{ console.log('不为3的倍数也不为15的倍数') } }else{ console.log('输入出错') }
注意事项
-
if else他只会进入其中的一个条件中 不会同时进入俩个同级的代码块
-
if 里面的条件可以为表达式也可以为值 但是都会被强制转换为boolean类型
-
if else可以嵌套多层 一般建议嵌套不超过俩层(可读性 可维护性)
switch case
switch(值){ case 值1: 执行的代码 break case 值2: 执行的代码 break ... default: 上面都不满足的默认的执行代码 }
示例
根据输入的指令打印对应的操作
/* 某个空调有对应的开关 当你按下的开关键为1号键的时候 执行加热操作 按下2号键 执行制冷操作 按下3号键 执行通风操作 按下的键为其他 不执行操作 */ var code = prompt('请输入你需要执行的指令') switch (Number(code)) { case 1://单独的分支 console.log('正在执行加热操作') break //break 跳出 结束这个switch块 后续的不再执行 case 2: console.log('正在执行制冷操作') break case 3: console.log('正在执行通风操作') break default: console.log('错误指令 不执行操作') }
-
switch 的值比对用到的是=== 必须要类型和值都一致
-
每个case块都是一个分支 如果没有break那么会进入下一个分支
-
多个分支可以执行一个操作
-
break用于跳出switch块 那么后续的分支不再执行
-
switch 不适用于范围内的比对
-
default 默认的执行 上面都不满足的情况下执行
switch块允许多层嵌套
switch(n){ case 值1: switch(i){ case 值1: ... break } break case 值2: .... default: ... }
示例
判断一个输入值的奇偶
var n = prompt('请输入值') //判断是否输入正确 switch(isNaN(Number(n))){ case true: switch(n%2){ case 0: console.log('偶数') break case 1: console.log('奇数') break } break case false: console.log('输入出错') }
-
switch 适合实际的值的列举(枚举) if 使用范围内容条件判断
-
switch 空间复杂度高于if switch时间复杂度低于if
- 枚举相当于一个箱子 箱子里面有很多对应的值 每个值有对应的名字
- 箱子 --- 1号 2号 .... 通过列举的名字来获取里面的内容(里面内容为常量 (不变的量))
拓展
a ** n 表示a的n次方
PI = Math.Pi; PI 表示π
Math.pow(a,n)表示求一个a的n次方
若有收获,就点个赞吧