控制语句是对应程序的一个控制,它分别对应条件控制语句和循环控制语句
条件控制语句:根据对应的条件来执行语句
循环控制语句:根据对应的条件能够多次循环重复执行
表达式
概述:由算术运算符拼接成的公式
算术表达式:算法运算符拼接的表达式
例 1+1
条件表达式:比较运算符拼接的表达式
例 1+1>1
关系表达式逻辑运算符拼接的表达式
例 1+1>2 && 1+3>4
运算符执行顺序
实例:
<script>
var i = 20
i++
var j = 10+29+(++n)-(n++)/10+30%7-5*3>10 && 20-15*29/18>13-(n++)/n+''+109 ? 18-
(2-4)*3+undefined-true+(n++) : n-(n++)*3+false+true //-47
console.log(n)//25
</script>
条件控制语句
常见的条件控制语句:
if...else...(根据对应的Boolean条件值进行判断,将不是Boolean的条件转换为bool类型)
switch...case...(根据对应的值来进行比对 里面采用的是恒等于=== 会自动进行比对)
if else
if(条件表达式){
对应满足条件的代码
}else{
不满足条件执行的代码
}
多分支结构 (else if)
多分支结构只要上面有一个满足了条件 之后的条件都不会再运行
if(条件1){
满足条件的代码
}else if(条件2){
满足条件的代码
}...
else{
所有条件都不满足执行的代码
}
if else的嵌套
if else允许多层嵌套 一般不超过两层
if(条件1){
if(子条件1){
满足子条件1执行的代码
}else if(子条件2){
满足子条件2的代码
}else{
不满足子条件执行的代码
}
}else{
不满足条件1执行的代码
}
if else 例题讲解(判断一个数是否为3的倍数,同时是否为5的倍数,范围1-999):
<script>
var n = prompt('请输入1-999之间的数')
if(n>=1 && n<=999){
if(n%3 == 0){
if(n%15 == 0){
console.log('是三的倍数也是十五的倍数')
}else{
console.log('是三的倍数不是十五的倍数')
}
}else{
console.log('不是三的倍数也不是十五的倍数')
}
}else{
console.log('输入错误')
}
</script>
判断是不是水仙花数:
<script>
var n = prompt('请输入一个数')
var bw = parseInt(n/100)
var sw = parseInt((n/10)%10)
var gw = parseInt(n%10)
var flower = bw*bw*bw+ sw*sw*sw +gw*gw*gw
if(isNaN(Number(n))){
console.log('输入错误')
}else if(n>999 || n<100){
console.log('数字输入错误')
}else if(flower == n){
console.log('水仙花')
}else{
console.log('不是水仙花')
}
</script>
注意事项:
- 当你的if块或者else块只有一行代码的时候可以省略{}符号
- if else语句的嵌套建议不超过两层
- if else中只会进入其中一个条件
- !isNaN()操作可以检测输是不是NaN 能给输入的值进行判断将NaN剔除出去
- prompt 能弹出一个弹窗 是String类型
switch case
switch(值表达式){
case 值1;
执行的代码
break;
case 值2;
执行的代码
break;
default:
上面都不满足执行的代码
}
switch case 例题讲解(小学生之手):
<script>
switch(prompt('请输入你的操作')){
case 'Q':
console.log('大杀四方')
break
case 'W':
console.log('致残打击')
break
case 'E':
console.log('大杀四方')
break
case 'R':
console.log('弄克萨斯段抬头')
break
case 'A':
case 'click':
console.log('平')
break
default:
console.log('defeat')
}
</script>
注意事项:
1、switch里面采用的===值和类型必须相等
2、必须添加break 跳出当前switch语句 不加则会继续执行后续分支
3、switch支持多层嵌套
4、default用来存放不满足前面条件的所执行的代码
5、当输入的条件想要Number类型的话-0或者*1可以代替Number()转为number类型
if else 和 switch 的比对
- if else常用于区间判断 switch case用于值判断(枚举判断)
- switch case 空间复杂度大于 if else switch case 时间复杂程度小于 if else
- if else 的效率低于switch case (用于空间交换)如果当前只有值的判断建议使用switch case
总结:
- if 里面的条件返回的是Boolean类型 如果不是会自动转成bool类型
- if else 适用于区间判断 switch case 适用于值判断
- switch case里面采用的判断是恒等判断 类型和值都必须相同
- if 可以单独使用
- if 的多分枝结构采用else if来实现
- if else中只会进入其中一个条件 后面的条件都不会再进入
- !isNaN()操作可以检测出是不是NaN 能给输入的值进行类型判断将NaN剔除出去
- prompt 能弹出一个弹窗 是String类型
- switch case可以实现多层嵌套
- 当你的if块或者else块只有一行代码的时候可以省略{}符号 不建议省略
- 每句代码结束的分号可有可无 一般建议加上 (后续为了减少编写的文件的大写会把js代码写在一行 加上分号便于分辨)
- if else 和switch case都支持嵌套 (if一般建议不要嵌套两层以上)
- switch case 空间复杂度大于 if else switch case 时间复杂程度小于 if else
枚举:枚举相当于一个箱子 箱子里面有对应的值 值是固定的(常量)