js表达式和条件控制语句
表达式
- 算术表达式由算术运算符组成的表达式 (返回的对应的结果)
- 逻辑表达式由逻辑运算符组成的表达式 (返回的对应的值)
- 条件表达式由比较运算符组成的表达式 (返回对应的boolean类型的值)
控制语句
概述
所有的语言都具备对应的控制语句,主要分为循环控制语句、条件控制语句。循环控制语句主要是控制对应的重新执行多次操作.条件控制语句主要控制的是对应的条件是否满足,进入执行对应的代码。
条件控制语句分类
- if else
- switch case
if else讲解
基础语法
if(条件表达式){
满足条件执行的代码
}else{
不满足条件执行的代码
}
示例
//如果我有钱我就买个别墅 没钱就打地铺
var haveMoney = true
//满足条件进入
if(haveMoney){
console.log('买别墅')
}else{ //不满足条件进入
console.log('打地铺')
}
练习
输入一个数值判断它是奇数还是偶数
var number = prompt('请输入一个数值')
if(number%2==0){
console.log('偶数')
}else{
console.log('奇数')
}
输入一个三位数,判断是否包含2
var number = prompt()
//取个位十位及百位
var a = number % 10 , b = parseInt(number % 100 / 10) ,c = parseInt(number / 100)
if(a==2 || b==2 || c==2){
console.log('包含2')
}else{
console.log('不包含2')
}
多分支控制
同级只会进入其中一个块
if(条件1){
满足条件1进入的
}else if(条件2){
满足条件2进入的
}else if(条件3){
满足条件3进入的
}else{
以上条件都不满足进入的
}
示例
同级它只会进入一个if块 (最先满足条件)
var n = prompt()
if(n > 0){
console.log('大于0')
}else if(n > 1){
console.log('大于1')
}else if(n > 2){
console.log('大于2')
}else{
console.log('小于或等于0')
}
练习
输入一个三位数,判断是否包含2
//多分枝控制
var number = prompt()
//取个位十位及百位
var a = number % 10,
b = parseInt(number % 100 / 10),
c = parseInt(number / 100)
//判断是否为数值
if (isNaN(Number(number))) { //如果转为0或者NaN进入 判断是否为NaN isNaN (如果是NaN返回true 否则返回false)
console.log('当前输入的不符合规范')
}else if (!(number >= 100 && number < 1000)) { //判断是否为三位数
console.log('当前输入的值不是3位数')
} else if (a == 2 || b == 2 || c == 2) {
console.log('包含2')
} else {
console.log('不包含2')
}
if else嵌套
if else 支持多级嵌套
if(条件1){
//满足条件1进入
if(条件2){
//满足条件2进入
...
}else{
//不满足条件2
....
}
}else{
//不满足条件1
...
}
建议if else嵌套不要超过俩层
示例
//奇偶判断
var n = prompt()
//判读是否为数值
if(isNaN(Number(n))){ //如果转为NaN
console.log('当前输入出错')
}else{
if(!(n%2)){
console.log('当前为偶数')
}else{
console.log('当前为奇数')
}
}
if else的简化操作
如果if块里面或else块里面只有一行 那么可以省略对应的{}
if(1>2)
console.log('你好')
else
console.log('世界')
switch case
基础写法
//表达式 返回一个值
switch(表达式){
//如果值为值1那么就执行值1下的相关操作
case 值1:
操作
break; //跳出switch块
//如果值为值2那么就执行值2下的相关操作
case 值2:
操作
break; //跳出switch块
//如果值为值3那么就执行值3下的相关操作
case 值3:
操作
break; //跳出switch块
//都不满足默认执行的操作
default:
操作
}
示例
商品选购系统,输入1返回红牛,输入2返回旺旺小小酥,输入3返回旺旺碎冰冰
//获取输入的值 input获取的值是string类型
var input = prompt('请输入你需要选购的商品编号')
//进行判断
//switch进行===的比对 (值一致且类型一致 地址比对)
switch (Number(input)) {
case 1:
console.log('恭喜获取红牛饮料一瓶')
break;
case 2:
console.log("旺旺小小酥 我的宝贝")
break;
case 3:
console.log("旺旺碎冰冰 吃完你开心")
break;
default:
console.log("您选购的商品不存在!!!")
}
switch中的case支持多个值
switch (Number(input)) {
case 1: case 6:
console.log('恭喜获取红牛饮料一瓶')
break;
case 2: case 4:
console.log("旺旺小小酥 我的宝贝")
break;
case 3: case 5:
console.log("旺旺碎冰冰 吃完你开心")
break;
default:
console.log("您选购的商品不存在!!!")
}
switch支持嵌套
switch(表达式){
case 值1:
switch(表达式){
case 值:
处理
....
}
break;
case ...
default:
.....
}
示例
switch(n){
case 1:
console.log("进入第一层switch")
switch(i){
case 2:
console.log("gameOver")
break;
default:
console.log("欢迎光临 请慢走")
}
break;
default:
console.log("输入错误")
}
if else 和 switch的区别的应用
- if else 一般用于区间判断,switch用于值的判断(运用的是===)
- switch的执行效率高于if else(用空间换时间)
总结
- if else一般用于区间判断,在if里面的表达式为条件表达式(最终都会被解析为boolean类型的值)
- if 多分支结构使用else if来进行扩展
- 在if多分枝的情况下只会进入第一个满足条件的,其他不会进入
- if支持嵌套的,一般建议嵌套层数不要超过两层
- switch是进行值的判断,而且运用恒等进行比对(必须值和类型都同步)
- switch它也可以完成区间的判断,但一般不建议。
- switch中的case块可以多个一起使用,如果其他没有break来跳出switch块,那么就会从满足条件一直走到底。
- break是用于跳出当前的switch块。
- switch的default是用于处理上述条件都不满足的情况下的内容