diff --git "a/26 \351\255\217\346\226\260\351\235\222/20241028 JavaScript\344\275\234\344\270\232.md" "b/26 \351\255\217\346\226\260\351\235\222/20241028 JavaScript\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..2703ddd78995736e51a5f9505f7ba0cc787a2b5b --- /dev/null +++ "b/26 \351\255\217\346\226\260\351\235\222/20241028 JavaScript\344\275\234\344\270\232.md" @@ -0,0 +1,775 @@ +# 笔记 + +# JavaScript 基础 - 第2天 + +> 理解什么是流程控制,知道条件控制的种类并掌握其对应的语法规则,具备利用循环编写简易ATM取款机程序能力 + +- 运算符 +- 语句 +- 综合案例 + + +## 运算符 + +### 算术运算符 + +数字是用来计算的,比如:乘法 * 、除法 / 、加法 + 、减法 - 等等,所以经常和算术运算符一起。 + +算术运算符:也叫数学运算符,主要包括加、减、乘、除、取余(求模)等 + +| 运算符 | 作用 | +| ------ | ---------------------------------------------------- | +| + | 求和 | +| - | 求差 | +| * | 求积 | +| / | 求商 | +| **%** | 取模(取余数),开发中经常用于作为某个数字是否被整除 | + +> 注意:在计算失败时,显示的结果是 NaN (not a number) + +```javascript +// 算术运算符 +console.log(1 + 2 * 3 / 2) // 4 +let num = 10 +console.log(num + 10) // 20 +console.log(num + num) // 20 + +// 1. 取模(取余数) 使用场景: 用来判断某个数是否能够被整除 +console.log(4 % 2) // 0 +console.log(6 % 3) // 0 +console.log(5 % 3) // 2 +console.log(3 % 5) // 3 + +// 2. 注意事项 : 如果我们计算失败,则返回的结果是 NaN (not a number) +console.log('你好' - 2) +console.log('你好' * 2) +console.log('你好' + 2) // 你好2 +``` + +### 赋值运算符 + +赋值运算符:对变量进行赋值的运算符 + + = 将等号右边的值赋予给左边, 要求左边必须是一个容器 + +| 运算符 | 作用 | +| ------ | -------- | +| += | 加法赋值 | +| -= | 减法赋值 | +| *= | 乘法赋值 | +| /= | 除法赋值 | +| %= | 取余赋值 | + +```javascript + +``` + +### 自增/自减运算符 + +| 符号 | 作用 | 说明 | +| ---- | ---- | -------------------------- | +| ++ | 自增 | 变量自身的值加1,例如: x++ | +| -- | 自减 | 变量自身的值减1,例如: x-- | + +1. ++在前和++在后在单独使用时二者并没有差别,而且一般开发中我们都是独立使用 +2. ++在后(后缀式)我们会使用更多 + +> 注意: +> +> 1. 只有变量能够使用自增和自减运算符 +> 2. ++、-- 可以在变量前面也可以在变量后面,比如: x++ 或者 ++x + +```javascript + +``` + +### 比较运算符 + +使用场景:比较两个数据大小、是否相等,根据比较结果返回一个布尔值(true / false) + +| 运算符 | 作用 | +| ------ | -------------------------------------- | +| > | 左边是否大于右边 | +| < | 左边是否小于右边 | +| >= | 左边是否大于或等于右边 | +| <= | 左边是否小于或等于右边 | +| === | 左右两边是否`类型`和`值`都相等(重点) | +| == | 左右两边`值`是否相等 | +| != | 左右值不相等 | +| !== | 左右两边是否不全等 | + +```javascript + +``` + +> 要判断一个值是不是等于 Nan 要用 isNaN() + + + +### 逻辑运算符 + +使用场景:可以把多个布尔值放到一起运算,最终返回一个布尔值 + +| 符号 | 名称 | 日常读法 | 特点 | 口诀 | +| ---- | ------ | -------- | -------------------------- | -------------- | +| && | 逻辑与 | 并且 | 符号两边有一个假的结果为假 | 一假则假 | +| \|\| | 逻辑或 | 或者 | 符号两边有一个真的结果为真 | 一真则真 | +| ! | 逻辑非 | 取反 | 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 | + +```javascript + +``` + +### 运算符优先级 + +> 逻辑运算符优先级: !> && > || + + + + + +## 分支语句 + +分支语句可以根据条件判定真假,来选择性的执行想要的代码 + +分支语句包含: + +1. if分支语句(重点) +2. 三元运算符 +3. switch语句 + +#### if 分支语句 + +语法: + +~~~javascript +if(条件表达式) { + // 满足条件要执行的语句 +} +~~~ + +小括号内的条件结果是布尔值,为 true 时,进入大括号里执行代码;为false,则不执行大括号里面代码 + +小括号内的结果若不是布尔类型时,会发生类型转换为布尔值,类似Boolean() + +如果大括号只有一个语句,大括号可以省略,但是,俺们不提倡这么做~ + +~~~javascript + +~~~ + +#### if双分支语句 + +如果有两个条件的时候,可以使用 if else 双分支语句 + +~~~javascript +if (条件表达式){ + // 满足条件要执行的语句 +} else { + // 不满足条件要执行的语句 +} +~~~ + +例如: + +~~~javascript + +~~~ + +#### if 多分支语句 + +使用场景: 适合于有多个条件的时候 + +```javascript +if (条件表达式1){ + // 满足条件要执行的语句1 +} else if (条件表达式2){ + // 满足条件要执行的语句2 +} else if (条件...){ + // 满足条件要执行的语句... +} else { + // 条件都不满足时要执行的语句 +} +``` + +~~~javascript + +~~~ + +#### 三元运算符(三元表达式) + +**使用场景**: 一些简单的双分支,可以使用 三元运算符(三元表达式),写起来比 if else双分支 更简单 + +**符号**:`? 与 : 配合使用` + +语法: + +~~~javascript +条件 ? 表达式1 : 表达式2 +~~~ + +例如: + +~~~javascript +// 三元运算符(三元表达式) +// 1. 语法格式 +// 条件 ? 表达式1 : 表达式2 + +// 2. 执行过程 +// 2.1 如果条件为真,则执行表达式1 +// 2.2 如果条件为假,则执行表达式2 + +// 3. 验证 +// 5 > 3 ? '真的' : '假的' +console.log(5 < 3 ? '真的' : '假的') + +// let age = 18 +// age = age + 1 +// age++ + +// 1. 用户输入 +let num = prompt('请您输入一个数字:') +// 2. 判断输出- 小于10才补0 +// num = num < 10 ? 0 + num : num +num = num >= 10 ? num : 0 + num +alert(num) +~~~ + +#### switch语句(了解) + +使用场景: 适合于有多个条件的时候,也属于分支语句,大部分情况下和 if多分支语句 功能相同 + +注意: + +1. switch case语句一般用于等值判断, if适合于区间判断 +2. switchcase一般需要配合break关键字使用 没有break会造成case穿透 +3. if 多分支语句开发要比switch更重要,使用也更多 + +例如: + +~~~javascript +// switch分支语句 +// 1. 语法 +// switch (表达式) { +// case 值1: +// 代码1 +// break + +// case 值2: +// 代码2 +// break +// ... +// default: +// 代码n +// } + + +~~~ + +#### 断点调试 + +**作用:**学习时可以帮助更好的理解代码运行,工作时可以更快找到bug + +浏览器打开调试界面 + +1. 按F12打开开发者工具 +2. 点到源代码一栏 ( sources ) +3. 选择代码文件 + +**断点:**在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来 + + + +### 循环语句 + +使用场景:重复执行 指定的一段代码,比如我们想要输出10次 '我学的很棒' + +学习路径: + +1.while循环 + +2.for 循环(重点) + +#### while循环 + +while : 在…. 期间, 所以 while循环 就是在满足条件期间,重复执行某些代码。 + +**语法:** + +~~~javascript +while (条件表达式) { + // 循环体 +} +~~~ + +例如: + +~~~javascript +// while循环: 重复执行代码 + +// 1. 需求: 利用循环重复打印3次 '月薪过万不是梦,毕业时候见英雄' +let i = 1 +while (i <= 3) { + document.write('月薪过万不是梦,毕业时候见英雄~
') + i++ // 这里千万不要忘了变量自增否则造成死循环 +} +~~~ + +循环三要素: + +1.初始值 (经常用变量) + +2.终止条件 + +3.变量的变化量 + +例如: + +~~~javascript + +~~~ + +#### 中止循环 + +`break` 中止整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用(提高效率) + +`continue` 中止本次循环,一般用于排除或者跳过某一个选项的时候 + +~~~javascript + +~~~ + +#### 无限循环 + +1.while(true) 来构造“无限”循环,需要使用break退出循环。(常用) + +2.for(;;) 也可以来构造“无限”循环,同样需要使用break退出循环。 + +~~~javascript +// 无限循环 +// 需求: 页面会一直弹窗询问你爱我吗? +// (1). 如果用户输入的是 '爱',则退出弹窗 +// (2). 否则一直弹窗询问 + +// 1. while(true) 无限循环 +// while (true) { +// let love = prompt('你爱我吗?') +// if (love === '爱') { +// break +// } +// } + +// 2. for(;;) 无限循环 +for (; ;) { + let love = prompt('你爱我吗?') + if (love === '爱') { + break + } +} +~~~ + +## 综合案例-ATM存取款机 + + + +![67101878155](E:\assets\1671018781557.png) + + + +分析: + +①:提示输入框写到循环里面(无限循环) + +②:用户输入4则退出循环 break + +③:提前准备一个金额预先存储一个数额 money + +④:根据输入不同的值,做不同的操作 + +​ (1) 取钱则是减法操作, 存钱则是加法操作,查看余额则是直接显示金额 + +​ (2) 可以使用 if else if 多分支 来执行不同的操作 + +完整代码: + +~~~javascript + +~~~ + +# 作业 + +```html + + + + + + Document + + + + + + +``` + + + +```html + + + + + + Document + + + + + + + +``` + + + +```html + + + + + + Document + + + + + + +``` + + + +```html + + + + + + Document + + + + + + +``` + + + +```html + + + + + + Document + + + + + + +``` + + + +```html + + + + + + Document + + + + + + +``` +