学习目标:
-
掌握常见运算符,为程序“能思考”做准备
-
掌握分支语句,让程序具备判断能力
-
掌握循环语句,让程序具备重复执行能力
一、运算符
1. 赋值运算符
对变量进行赋值的运算符,能够使用赋值运算符简化代码。
-
= 将等号右边的值赋予给左边, 要求左边必须是一个容器
-
其他赋值运算符:+=、-=、*=、/=、%=
-
使用这些运算符可以在对变量赋值时进行快速操作
2. 一元运算符
众多的 JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符。
-
自增:++,作用,让变量的值 +1
-
自减:--,作用,让变量的值 -1
-
使用场景:经常用于计数来使用。 比如进行10次操作,用它来计算进行了多少次了
-
自增运算符的用法:
前置自增:先自加再使用
后置自增:先使用再自加
1. 前置自增和后置自增单独使用没有区别
2. 一般开发中我们都是独立使用
3. 后面 i++ 后置自增会使用相对较多,并且都是单独使用
let i = 1
console.log(i++ + ++i + i)
3. 比较运算符
比较运算符的介绍,使用场景:比较两个数据大小、是否相等。
-
比较运算符:
-
> : 左边是否大于右边
-
<: 左边是否小于右边
-
>=: 左边是否大于或等于右边
-
<=: 左边是否小于或等于右边
-
==: 左右两边值是否相等
-
===: 左右两边是否类型和值都相等
-
!==: 左右两边是否不全等
比较结果为boolean类型,即只会得到 true 或 false。
对比:
= 单等是赋值
== 是判断
=== 是全等
开发中判断是否相等,强烈推荐使用 ===
-
字符串比较,是比较的字符对应的ASCII码
从左往右依次比较,如果第一位一样再比较第二位,以此类推。
-
NaN不等于任何值,包括它本身
涉及到"NaN“ 都是 false。
-
尽量不要比较小数,因为小数有精度问题
-
不同类型之间比较会发生隐式转换
-
最终把数据隐式转换转成number类型再比较
-
所以开发中,如果进行准确的比较我们更喜欢 === 或者 !==
4. 逻辑运算符
掌握逻辑运算符,为程序“能思考”做准备。
提问:如果我想判断一个变量 num 是否大于5且小于10,怎么办?
错误写法:
5 < num < 10
使用场景:逻辑运算符用来解决多重条件判断
正确写法:
num > 5 && num < 10
符号 | 名称 | 日常读法 | 特点 | 口诀 |
---|---|---|---|---|
&& | 逻辑与 | 并且 | 符号两边都为true结果才为true | 一假则假 |
|| | 逻辑或 | 或者 | 符号两边有一个true就为true | 一真则真 |
! | 逻辑非 | 取反 | true变false false变true | 真变假,假变真 |
5. 运算符优先级
掌握运算符优先级,能判断运算符执行的顺序。
- 一元运算符里面的逻辑非优先级很高
- 逻辑与 比 逻辑或 优先级高
let a = 3 > 5 && 2 < 7 && 3 == 4
console.log(a);
let b = 3 <= 4 || 3 > 1 || 3 != 2
console.log(b);
let c = 2 === "2"
console.log(c);
let d = !c || b && a
console.log(d);
二、语句
1. 表达式和语句
-
表达式
表达式是可以被求值的代码,JavaScript 引擎会将其计算出一个结果。
-
语句
语句是一段可以执行的代码。
比如: prompt() 可以弹出一个输入框,还有 if语句 for 循环语句等等
-
区别
- 表达式:因为表达式可被求值,所以它可以写在赋值语句的右侧。
- 语句:而语句不一定有值,所以比如 alert() for和break 等语句就不能被用于赋值。
- 某些情况,也可以把表达式理解为表达式语句,因为它是在计算结果,但不是必须的成分 (例如continue语句)
2. 分支语句
掌握流程控制,写出能“思考”的程序。
程序三大流程控制语句
-
从上往下执行几句,这种叫顺序结构
-
有的时候要根据条件选择执行代码,这种就叫分支结构
-
某段代码被重复执行,就叫循环结构
分支语句
分支语句可以让我们有选择性的执行想要的代码
分支语句包含:
-
If分支语句
-
三元运算符
-
switch 语句
if语句
if语句有三种使用:单分支、双分支、多分支
if (条件) {满足条件要执行的代码
}
if (条件) {满足条件执行的代码
} else {不满足条件执行的代码
}
if (条件) {满足条件执行的代码
} else if (条件) {满足条件要执行的代码
} else {不满足条件执行的代码
}
括号内的条件为true时,进入大括号里执行代码
小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型
如果大括号只有一个语句,大括号可以省略,但是,俺们不提倡这么做
三元运算符
使用场景: 其实是比 if 双分支 更简单的写法,可以使用 三元表达式,一般用来取值
符号:? 与 : 配合使用
switch语句
找到跟小括号里数据全等的case值,并执行里面对应的代码
若没有全等 === 的则执行default里的代码
switch case语句一般用于等值判断,不适合于区间判断
switch case一般需要配合break关键字使用, 没有break会造成case穿透
循环结构
断点调试
-
作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug
-
浏览器打开调试界面
1.点到浏览器按F12打开开发者工具
2.Sources一栏
3.选择代码文件
-
断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来
while 循环
循环:重复执行一些操作
while : 在…. 期间, 所以 while循环 就是在满足条件期间,重复执行某些代码。
跟if语句很像,都要满足小括号里的条件为true才会进入 循环体 执行代码
while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳出
while循环三要素:
循环的本质就是以某个变量为起始值,然后不断产生变化量,慢慢靠近终止条件的过程。
所以,while循环需要具备三要素:
1.变量起始值
2.终止条件(没有终止条件,循环会一直执行,造成死循环)
3.变量变化量(用自增或者自减)
循环退出
-
continue:结束本次循环,继续下次循环
-
break:跳出所在的循环
区别:
-
continue 退出本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue
-
break 退出整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用
for 循环
好处:把声明起始值、循环条件、变化值写到一起,让人一目了然,它是最常使用的循环形式
while(true) 来构造“无限”循环,需要使用break退出循环。
for(;;) 也可以来构造“无限”循环,同样需要使用break退出循环
for循环和while循环有什么区别
-
当如果明确了循环的次数的时候推荐使用for循环
-
当不明确循环的次数的时候推荐使用while循环
for循环嵌套:一个循环里再套一个循环,一般用在for循环里