表达式和条件控制语句

276 阅读4分钟

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下的相关操作
	case1:
		操作
		break; //跳出switch块
	//如果值为值2那么就执行值2下的相关操作
	case2:
		操作
		break; //跳出switch块
	//如果值为值3那么就执行值3下的相关操作
	case3:
		操作
		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(表达式){
	case1:
		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是用于处理上述条件都不满足的情况下的内容