1、运算符
1.1 赋值运算符
对变量进行赋值的运算符
- +=
- -=
- *=
- /=
- %=
<script>
let num = 1
// num = num + 1
// 采取赋值运算符
// num += 1
num += 3
console.log(num) //4
</script>
1.2 一元运算符
<script>
let num = 10
// num = num + 1
// num += 1
// console.log(num);
// 1. 前置自增
// let i = 1
// ++i
// console.log(i);
// let i = 1
// console.log(++i + 1) //3
// 2. 后置自增
// let i = 1
// i++
// console.log(i);
// let i = 1
// console.log(i++ + 1) //2
// 了解
let i = 1
console.log(i++ + ++i + i) //7
</script>
1.3 比较运算符
- Ø > : 左边是否大于右边
- =: 左边是否大于或等于右边
- <=: 左边是否小于或等于右边
- ==: 左右两边值是否相等
- ===: 左右两边是否类型和值都相等 (开发中推荐使用)
- !==: 左右两边是否不全等
- 比较结果为boolean类型,即只会得到 true 或 fals
<script>
console.log(3 > 5) // false
console.log(3 >= 3) // true
console.log(2 == 2) // true
// 比较运算符有隐式转换 把'2' 转换为 2 双等号 只判断值
console.log(2 == '2') // true
// console.log(undefined === null)
// === 全等 判断 值 和 数据类型都一样才行
// 以后判断是否相等 请用 ===
console.log(2 === '2') // false
console.log(NaN === NaN) // false 不等于任何人,包括他自己
console.log(2 !== '2') // true
console.log(2 != '2') // false
console.log('-------------------------')
console.log('a' < 'b') // true
console.log('aa' < 'ab') // true
console.log('aa' < 'aac') // true
console.log('-------------------------')
</script>
1.4 逻辑运算符
<script>
// 逻辑与 一假则假
console.log(true && true) //true
console.log(false && true) //false
console.log(3 < 5 && 3 > 2) //true
console.log(3 < 5 && 3 < 2) //false
console.log('-----------------')
// 逻辑或 一真则真
console.log(true || true) //true
console.log(false || true) //true
console.log(false || false) //false
console.log('-----------------')
// 逻辑非 取反
console.log(!true) //false
console.log(!false) //true
console.log('-----------------')
let num = 6
console.log(num > 5 && num < 10) //true
console.log('-----------------')
</script>
1.4.1 判断一个数是4的倍数,且不是100的倍数
<script>
// 1. 用户输入
let num = +prompt('请输入一个数字:')
// 2. 弹出结果
alert(num % 4 === 0 && num % 100 !== 0)
</script>
1.5 运算符优先级
- 一元运算符里面的逻辑非优先级很高
- 逻辑与比逻辑或优先级高
2、语句
2.1 表达式和语句
2.1.1区别
表达式:因为表达式可被求值,所以它可以写在赋值语句的右侧。
语句:而语句不一定有值,所以比如 alert() for和break 等语句就不能被用于赋值。
2.2 分支语句
2.2.1 If 分支语句
-
单分支
-
// 1. 用户输入 let score = +prompt('请输入成绩') // 2. 进行判断输出 if (score >= 700) { alert('恭喜考入黑马程序员') } console.log('-----------------')
-
双分支
-
判断用户登录案例:
<script> // 1. 用户输入 let uname = prompt('请输入用户名:') let pwd = prompt('请输入密码:') // 2. 判断输出 if (uname === 'zt' && pwd === '123456') { alert('恭喜登录成功') } else { alert('用户名或者密码错误') } </script>
-
判断闰年案例:
<script> // 1. 用户输入 let year = prompt('请输入年份:') // 2. 判断输出 if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) { alert(`${year}是闰年`) } else { alert(`${year}是平年`) } </script>
-
多分支
-
输入成绩案例:
<script> // 1. 用户输入 let score = +prompt('请输入成绩:') // 2. 判断输出 if (score >= 90) { alert('成绩优秀') } else if (score >= 70) { alert('成绩良好') } else if (score >= 60) { alert('成绩及格') } else { alert('成绩不及格') }
2.2.2 三元运算符
其实是比 if 双分支 更简单的写法,可以使用 三元表达
案例:判断2个数的最大值
<script>
// 1. 用户输入
let num1 = +prompt('请您输入第一个数:')
let num2 = +prompt('请您输入第二个数:')
// 2. 判断输出-三元运算符
// if (num1 > num2) {
// alert(num1)
// }
// else {
// alert(num2)
// }
num1 > num2 ? alert(`最大值是${num1}`) : alert(`最大值是${num2}`)
</script>
案例:数字补0
<script>
// 1. 用户输入
let num = prompt('请您输入一个数字:')
// 2. 判断输出-小于10的才补0
// num = num < 10 ? 0 + num : num
num = num >= 10 ? num : 0 + num
alert(num)
</script>
2.2.3 switch 语句
案例:简单计算器
<script>
// 1. 用户输入 2个数字 + 操作符号 + - * /
let num1 = +prompt('请您输入第一个数字:')
let num2 = +prompt('请您输入第二个数字:')
let sp = prompt('请您输入 + - * / 其中一个:')
// 2. 判断输出
switch (sp) {
case '+':
alert(`两个数的加法操作是:${num1 + num2}`)
break
case '-':
alert(`两个数的加法操作是:${num1 - num2}`)
break
case '*':
alert(`两个数的加法操作是:${num1 * num2}`)
break
case '/':
alert(`两个数的加法操作是:${num1 / num2}`)
break
default:
alert(`你干啥嘞,请输入 + - * /`)
}
</script>
2.3 循环语句
2.3.1断点调试
1. 按F12打开开发者工具
2. 点到sources一栏
3. 选择代码文件
2.3.2 while循环
1. while循环基本语法:
2. while循环三要素:
(1)变量起始值
(2)终止条件
(3)变量变化量
// 1. 变量的起始值
let end = +prompt('请输入次数:')
let i = 1
// 2. 终止条件
while (i <= end) {
document.write(`我要循环${end}次 <br>`)
// 3. 变量的变化量
i++
}
案例:在页面打印输出10句“月薪过万”
let i = 1
while (i <= 10) {
document.write('月薪过万 <br>')
i++
}
while循环的练习:
<script>
// 1. 页面输出 1 ~ 100
// let i = 1
// while (i <= 100) {
// document.write(`这是第${i}个数 <br>`)
// i++
// }
// 2. 页面输出 1 ~ 100累加和
// let i = 1
// let sum = 0
// while (i <= 100) {
// // sum = sum + i
// sum += i
// i++
// }
// console.log(sum);
// 3. 页面输出 1 ~ 100 的偶数和
let i = 1
let sum = 0
while (i <= 100) {
// 筛选偶数
if (i % 2 === 0) {
sum = sum + i
}
// 每次循环都要自加
i++
}
console.log(sum);
</script>
3. 循环退出
continue和break的区别:
- break:退出循环
- continue:结束本次循环,继续下次循环
<script>
// let i = 1
// while (i <= 5) {
// console.log(i)
// if (i === 3) {
// break // 退出循环
// }
// i++
// }
let i = 1
while (i <= 5) {
if (i === 3) {
i++
continue //结束本次循环 继续下一个循环
}
console.log(i)
i++
}
</script>
案例:你爱我吗
<script>
while (true) {
let str = prompt('你爱我吗')
// 退出条件 爱
if (str === '爱') {
break
}
}
</script>
3、综合案例——简易ATM取款机
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 1. 开始循环 输入框写到 循环里面
// 3. 准备一个总的金额
let money = 1000
while (true) {
let re = +prompt(`
请你选择操作:
1.存钱
2.取钱
3.查看余额
4.退出
`)
// 2. 如果用户输入 4 则退出循环, break
if (re === 4) {
break
}
// 4. 根据输入做操作
switch (re) {
case 1:
//存钱
let cun = +prompt('请输入存款金额:')
money = money + cun
break
case 2:
//存钱
let qu = +prompt('请输入取款金额:')
money = money - qu
break
case 3:
alert(`您的银行卡余额是${money}`)
break
}
}
</script>
</body>
</html>