理解什么是流程控制,知道条件控制的种类并掌握其对应的语法规则,具备利用循环编写简易ATM取款机程序能力
数字是用来计算的,比如:乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起。
算术运算符:也叫数学运算符,主要包括加、减、乘、除、取余(求模)等
| 运算符 | 作用 |
|---|---|
| + | 求和 |
| - | 求差 |
| * | 求积 |
| / | 求商 |
| % | 取模(取余数),开发中经常用于作为某个数字是否被整除 |
注意:在计算失败时,显示的结果是 NaN (not a number)
x
1// 算术运算符2console.log(1 + 2 * 3 / 2) // 4 3let num = 104console.log(num + 10) // 205console.log(num + num) // 2067// 1. 取模(取余数) 使用场景: 用来判断某个数是否能够被整除8console.log(4 % 2) // 0 9console.log(6 % 3) // 010console.log(5 % 3) // 211console.log(3 % 5) // 31213// 2. 注意事项 : 如果我们计算失败,则返回的结果是 NaN (not a number)14console.log('pink老师' - 2)15console.log('pink老师' * 2)16console.log('pink老师' + 2) // pink老师2赋值运算符:对变量进行赋值的运算符
= 将等号右边的值赋予给左边, 要求左边必须是一个容器
| 运算符 | 作用 |
|---|---|
| += | 加法赋值 |
| -+ | 减法赋值 |
| *= | 乘法赋值 |
| /= | 除法赋值 |
| %= | 取余赋值 |
xxxxxxxxxx81<script>2let num = 13// num = num + 14// 采取赋值运算符5// num += 16num += 37console.log(num)8</script>| 符号 | 作用 | 说明 |
|---|---|---|
| ++ | 自增 | 变量自身的值加1,例如: x++ |
| -- | 自减 | 变量自身的值减1,例如: x-- |
注意:
- 只有变量能够使用自增和自减运算符
- ++、-- 可以在变量前面也可以在变量后面,比如: x++ 或者 ++x
xxxxxxxxxx221<script>2 // let num = 103 // num = num + 14 // num += 15 // // 1. 前置自增6 // let i = 17 // ++i8 // console.log(i)910 // let i = 111 // console.log(++i + 1)12 // 2. 后置自增13 // let i = 114 // i++15 // console.log(i)16 // let i = 117 // console.log(i++ + 1)1819 // 了解 20 let i = 121 console.log(i++ + ++i + i)22 </script>使用场景:比较两个数据大小、是否相等,根据比较结果返回一个布尔值(true / false)
| 运算符 | 作用 |
|---|---|
| > | 左边是否大于右边 |
| < | 左边是否小于右边 |
| >= | 左边是否大于或等于右边 |
| <= | 左边是否小于或等于右边 |
| === | 左右两边是否类型和值都相等(重点) |
| == | 左右两边值是否相等 |
| != | 左右值不相等 |
| !== | 左右两边是否不全等 |
xxxxxxxxxx191<script>2 console.log(3 > 5)3 console.log(3 >= 3)4 console.log(2 == 2)5 // 比较运算符有隐式转换 把'2' 转换为 2 双等号 只判断值6 console.log(2 == '2') // true7 // console.log(undefined === null)8 // === 全等 判断 值 和 数据类型都一样才行9 // 以后判断是否相等 请用 === 10 console.log(2 === '2')11 console.log(NaN === NaN) // NaN 不等于任何人,包括他自己12 console.log(2 !== '2') // true 13 console.log(2 != '2') // false 14 console.log('-------------------------')15 console.log('a' < 'b') // true16 console.log('aa' < 'ab') // true17 console.log('aa' < 'aac') // true18 console.log('-------------------------')19</script>使用场景:可以把多个布尔值放到一起运算,最终返回一个布尔值
| 符号 | 名称 | 日常读法 | 特点 | 口诀 |
|---|---|---|---|---|
| && | 逻辑与 | 并且 | 符号两边有一个假的结果为假 | 一假则假 |
| || | 逻辑或 | 或者 | 符号两边有一个真的结果为真 | 一真则真 |
| ! | 逻辑非 | 取反 | true变false false变true | 真变假,假变真 |
| A | B | A && B | A || B | !A |
|---|---|---|---|---|
| false | false | false | false | true |
| false | true | false | true | true |
| true | false | false | true | false |
| true | true | true | true | false |
xxxxxxxxxx221<script>2 // 逻辑与 一假则假3 console.log(true && true)4 console.log(false && true)5 console.log(3 < 5 && 3 > 2)6 console.log(3 < 5 && 3 < 2)7 console.log('-----------------')8 // 逻辑或 一真则真9 console.log(true || true)10 console.log(false || true)11 console.log(false || false)12 console.log('-----------------')13 // 逻辑非 取反14 console.log(!true)15 console.log(!false)1617 console.log('-----------------')1819 let num = 620 console.log(num > 5 && num < 10)21 console.log('-----------------')22 </script> 
逻辑运算符优先级: !> && > ||

分支语句可以根据条件判定真假,来选择性的执行想要的代码
分支语句包含:
语法:
xxxxxxxxxx31if(条件表达式) {2 // 满足条件要执行的语句3}小括号内的条件结果是布尔值,为 true 时,进入大括号里执行代码;为false,则不执行大括号里面代码
小括号内的结果若不是布尔类型时,会发生类型转换为布尔值,类似Boolean()
如果大括号只有一个语句,大括号可以省略,但是,俺们不提倡这么做~
xxxxxxxxxx331<script>2 // 单分支语句3 // if (false) {4 // console.log('执行语句')5 // }6 // if (3 > 5) {7 // console.log('执行语句')8 // }9 // if (2 === '2') {10 // console.log('执行语句')11 // }12 // 1. 除了0 所有的数字都为真13 // if (0) {14 // console.log('执行语句')15 // }16 // 2.除了 '' 所有的字符串都为真 true17 // if ('pink老师') {18 // console.log('执行语句')19 // }20 // if ('') {21 // console.log('执行语句')22 // }23 // // if ('') console.log('执行语句')2425 // 1. 用户输入26 let score = +prompt('请输入成绩')27 // 2. 进行判断输出28 if (score >= 700) {29 alert('恭喜考入黑马程序员')30 }31 console.log('-----------------')3233 </script>如果有两个条件的时候,可以使用 if else 双分支语句
xxxxxxxxxx51if (条件表达式){2 // 满足条件要执行的语句3} else {4 // 不满足条件要执行的语句5}例如:
xxxxxxxxxx111 <script>2 // 1. 用户输入3 let uname = prompt('请输入用户名:')4 let pwd = prompt('请输入密码:')5 // 2. 判断输出6 if (uname === 'pink' && pwd === '123456') {7 alert('恭喜登录成功')8 } else {9 alert('用户名或者密码错误')10 }11 </script>使用场景: 适合于有多个条件的时候
xxxxxxxxxx141 <script>2 // 1. 用户输入3 let score = +prompt('请输入成绩:')4 // 2. 判断输出5 if (score >= 90) {6 alert('成绩优秀,宝贝,你是我的骄傲')7 } else if (score >= 70) {8 alert('成绩良好,宝贝,你要加油哦~~')9 } else if (score >= 60) {10 alert('成绩及格,宝贝,你很危险~')11 } else {12 alert('成绩不及格,宝贝,我不想和你说话,我只想用鞭子和你说话~')13 }14 </script>使用场景: 一些简单的双分支,可以使用 三元运算符(三元表达式),写起来比 if else双分支 更简单
符号:? 与 : 配合使用
语法:
xxxxxxxxxx11条件 ? 表达式1 : 表达式2例如:
xxxxxxxxxx221// 三元运算符(三元表达式)2// 1. 语法格式3// 条件 ? 表达式1 : 表达式2 45// 2. 执行过程 6// 2.1 如果条件为真,则执行表达式17// 2.2 如果条件为假,则执行表达式289// 3. 验证10// 5 > 3 ? '真的' : '假的'11console.log(5 < 3 ? '真的' : '假的')1213// let age = 18 14// age = age + 115// age++1617// 1. 用户输入 18let num = prompt('请您输入一个数字:')19// 2. 判断输出- 小于10才补020// num = num < 10 ? 0 + num : num21num = num >= 10 ? num : 0 + num22alert(num)使用场景: 适合于有多个条件的时候,也属于分支语句,大部分情况下和 if多分支语句 功能相同
注意:
例如:
xxxxxxxxxx301// switch分支语句2// 1. 语法3// switch (表达式) {4// case 值1:5// 代码16// break78// case 值2:9// 代码210// break11// ...12// default:13// 代码n14// }1516<script>17 switch (2) {18 case 1:19 console.log('您选择的是1')20 break // 退出switch21 case 2:22 console.log('您选择的是2')23 break // 退出switch24 case 3:25 console.log('您选择的是3')26 break // 退出switch27 default:28 console.log('没有符合条件的')29 }30</script>作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug
浏览器打开调试界面
断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来
使用场景:重复执行 指定的一段代码,比如我们想要输出10次 '我学的很棒'
学习路径:
1.while循环
2.for 循环(重点)
while : 在…. 期间, 所以 while循环 就是在满足条件期间,重复执行某些代码。
语法:
xxxxxxxxxx31while (条件表达式) {2 // 循环体 3}例如:
xxxxxxxxxx81// while循环: 重复执行代码23// 1. 需求: 利用循环重复打印3次 '月薪过万不是梦,毕业时候见英雄'4let i = 15while (i <= 3) {6 document.write('月薪过万不是梦,毕业时候见英雄~<br>')7 i++ // 这里千万不要忘了变量自增否则造成死循环8}循环三要素:
1.初始值 (经常用变量)
2.终止条件
3.变量的变化量
例如:
xxxxxxxxxx201<script>2 // // 1. 变量的起始值3 // let i = 14 // // 2. 终止条件5 // while (i <= 3) {6 // document.write('我要循环三次 <br>')7 // // 3. 变量的变化量8 // i++9 // }10 // 1. 变量的起始值11 let end = +prompt('请输入次数:')12let i = 113// 2. 终止条件14while (i <= end) {15 document.write('我要循环三次 <br>')16 // 3. 变量的变化量17 i++18}1920</script>break 中止整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用(提高效率)
continue 中止本次循环,一般用于排除或者跳过某一个选项的时候
xxxxxxxxxx231<script>2 // let i = 13 // while (i <= 5) {4 // console.log(i)5 // if (i === 3) {6 // break // 退出循环7 // }8 // i++910 // }111213 let i = 114 while (i <= 5) {15 if (i === 3) {16 i++17 continue18 }19 console.log(i)20 i++2122 }23 </script>1.while(true) 来构造“无限”循环,需要使用break退出循环。(常用)
2.for(;;) 也可以来构造“无限”循环,同样需要使用break退出循环。
xxxxxxxxxx201// 无限循环 2// 需求: 页面会一直弹窗询问你爱我吗?3// (1). 如果用户输入的是 '爱',则退出弹窗4// (2). 否则一直弹窗询问56// 1. while(true) 无限循环7// while (true) {8// let love = prompt('你爱我吗?')9// if (love === '爱') {10// break11// }12// }1314// 2. for(;;) 无限循环15for (; ;) {16 let love = prompt('你爱我吗?')17 if (love === '爱') {18 break19 }20}
分析:
①:提示输入框写到循环里面(无限循环)
②:用户输入4则退出循环 break
③:提前准备一个金额预先存储一个数额 money
④:根据输入不同的值,做不同的操作
(1) 取钱则是减法操作, 存钱则是加法操作,查看余额则是直接显示金额
(2) 可以使用 if else if 多分支 来执行不同的操作
完整代码:
xxxxxxxxxx351<script>2 // 1. 开始循环 输入框写到 循环里面3 // 3. 准备一个总的金额4 let money = 1005while (true) {6 let re = +prompt(`7请您选择操作:81.存钱92.取钱103.查看余额114.退出12`)13 // 2. 如果用户输入的 4 则退出循环, break 写到if 里面,没有写到switch里面, 因为4需要break退出循环14 if (re === 4) {15 break16 }17 // 4. 根据输入做操作18 switch (re) {19 case 1:20 // 存钱21 let cun = +prompt('请输入存款金额')22 money = money + cun23 break24 case 2:25 // 存钱26 let qu = +prompt('请输入取款金额')27 money = money - qu28 break29 case 3:30 // 存钱31 alert(`您的银行卡余额是${money}`)32 break33 }34}35</script>