- 表达式:是可以被求值的代码,js引擎会将其计算出一个结果
- 语句:一段可以被执行的代码
区别
- 表达式与语句的区别
- 一个可以求值,一个不一定
- 表达式 num = 3 + 4
- 语句
alert() console.log()
三大流程控制语句
- 顺序语句
- 条件语句
- 循环语句
分支语句
选择性的执行想要的代码
- if 分支
- 三元运算符
- switch 语句
if分支语句
if单分支语句
- 语法:
if(条件) {
执行语句
}
条件都会转换为布尔类型
- 除了0,所有的数字都为rue
- 除了”(空字符串) 其余所有字符串都为真
if (true) {
console.log('执行');
}
let score = +prompt('请输入成绩')
if (score > 700) {
alert('恭喜!')
}
if双分支语句
- 语法
if(条件) {
满足条件执行的代码
} else {
不满足条件执行代码
}
- 案例一
let username = prompt('请输入用户名')
let password = prompt('请输入密码')
if (username === 'ttx' && password === '123456') {
alert('恭喜登录成功')
} else {
alert('用户名或密码错误')
}
- 案例二
/* 能被4整除但不能被100整除 或者被400整除 否则平年 */
// 1.用户输入
let year = prompt('请输入年份')
// 2.判断输出
// 先 && 后 ||
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
alert(`${year}年为闰年`)
} else {
alert(`${year}年是平年`)
}
if多分支语句
let score = parseFloat(prompt('请输入成绩'))
if (score >= 90) {
alert('成绩优秀')
} else if (score >= 70) {
alert('成绩良好')
} else if (score >= 60) {
alert('成绩合格')
} else {
alert('不及格')
}
三元运算符
- 使用场景:其实是比if双分支更简单的写法,可以使用三元表达式,一般用来取值
- 符号:? :
- 语法
条件 ? 满足条件执行的代码 : 不满足条件执行的代码
- 练习一下
// 3 > 5 ? alert('真的') : alert('假的')
// alert(3 > 5 ? '真的' : '假的')
let sum = 3 < 5 ? 3 : 5
document.write(sum)
案例
判断两个数的最大值
let num1 = +prompt('请输入第一个数')
let num2 = +prompt('请输入第二个数')
num1 > num2 ? alert(`最大值为${num1}`) : alert(`最大值为${num2}`)
// 方法2:使用if
if (num1 > num2) {
document.write(`最大值为${num1}`)
} else {
document.write(`最大值为${num2}`)
}
swich选择语句
- 语法格式
switch (数据) {
case 值1:
代码1
break
case 值2:
代码2
break
default:
代码n
break
}
- 数据 === 值
- 没有 break 就会穿透 往下漏
- 执行效率比if else if高
switch (2) {
case 1:
console.log('你选择的是1');
break //退出switch
case 2:
console.log('你选择的是2');
break //退出switch
case 3:
console.log('你选择的是3');
break //退出switch
default:
console.log('没有符合条件的');
//最后一个break可以省略
}
案例
- 简单计算器
- 需求:输入两个数字,输入运算符号,弹出结果
let num1 = +prompt('请输入第一个数')
let num2 = +prompt('请输入第二个数')
let sp = prompt('请你输入 + - * / 操作符')
switch (sp) {
case '+':
document.write(`两个数的加法操作${num1 + num2}`)
break
case '-':
document.write(`两个数的减法操作${num1 - num2}`)
break
case '*':
document.write(`两个数的乘法操作${num1 * num2}`)
break
case '/':
document.write(`两个数的除法操作${num1 / num2}`)
break
default:
document.write('<h2>你干啥呀!为啥不输入+ - * / 中的任何一个呢</h2>')
}
switch与if的区别
共同点
- 都能实现多分支,多选一
- 大部分情况下可以互换
区别
switch...case
语句通常处理case为比较确定值得情况,而if...else...
语句更加灵活,通常用于范围判断(大于,等于某个范围)switch
语句进行判断后直接执行到程序得语句,效率更高;而if...else
语句有几种判断条件,就得判断多少次switch
一定要注意,必须是===
全等,一定注意数据类型,同时注意break
,否则会有穿透效果
结论
- 当分支比较少时,
if...else
语句执行效率高 - 当分支比较多时,
switch
语句执行效率高,而且结构清晰
没有回复内容