文章目录
运算符
算术运算符
也叫数学运算符,主要包括加、减、乘、除、取余(求模)等
运算符 | 作用 |
---|---|
+ | 求和 |
- | 求差 |
* | 求积 |
/ | 求商 |
% | 取模(取余数),开发中经常用于作为某个数字是否被整除 |
注意:在计算失败时,显示的结果是 NaN (not a number)
赋值运算符–P19 赋值运算符
对变量进行赋值的运算符
= 将等号右边的值赋予给左边, 要求左边必须是一个容器
运算符 | 作用 |
---|---|
+= | 加法赋值 |
-+ | 减法赋值 |
*= | 乘法赋值 |
/= | 除法赋值 |
%= | 取余赋值 |
一元运算符–P20 自增运算符
众多的 JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符
自增/自减运算符
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量自身的值加1,例如: x++ |
– | 自减 | 变量自身的值减1,例如: x– |
使用场景:经常用于计数来使用。
- ++在前和++在后在单独使用时二者并没有差别,而且一般开发中我们都是独立使用
- 前置自增和后置自增如果参与运算的区别
- 前置自增:先自加再使用(记忆口诀:++在前 先加)
- 后置自增:先使用再自加(记忆口诀:++在后 后加)
注:
- 只有变量能够使用自增和自减运算符
- ++、-- 可以在变量前面也可以在变量后面,比如: x++ 或者 ++x
比较运算符–P21 比较运算符
运算符 | 作用 |
---|---|
> | 左边是否大于右边 |
< | 左边是否小于右边 |
>= | 左边是否大于或等于右边 |
<= | 左边是否小于或等于右边 |
=== | 左右两边是否类型 和值 都相等(重点) |
== | 左右两边值 是否相等(具有隐式转换性质) |
!= | 左右值不相等 |
!== | 左右两边是否不全等 |
使用场景:比较两个数据大小、是否相等,根据比较结果返回一个布尔值(true / false)
对比:
- = 单等是赋值
- == 是判断
- === 是全等
- 开发中判断是否相等,强烈推荐使用 ===
注意:
- 字符串比较,是比较的字符对应的ASCII码
- 从左往右依次比较
- 如果第一位一样再比较第二位,以此类推
- 比较的少,了解即可
- NaN不等于任何值,包括它本身
- 涉及到
NaN
都是false
- 涉及到
- 尽量不要比较小数,因为小数有精度问题
- 不同类型之间比较会发生隐式转换
- 最终把数据隐式转换转成number类型再比较
- 所以开发中,如果进行准确的比较我们更喜欢
===
或者!==
逻辑运算符–P22 逻辑运算符以及优先级
使用场景:逻辑运算符用来解决多重条件判断,可以把多个布尔值放到一起运算,最终返回一个布尔值
符号 | 名称 | 日常读法 | 特点 | 口诀 |
---|---|---|---|---|
&& | 逻辑与 | 并且 | 符号两边都为true结果才为true | 一假则假 |
|| | 逻辑或 | 或者 | 符号两边有一个true结果就为true | 一真则真 |
! | 逻辑非 | 取反 | true变false false变true | 真变假,假变真 |
运算符优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++ -- ! |
3 | 算数运算符 | 先* / % 后 + - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | ! > && > ` |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
语句–P23 if单分支语句
表达式和语句
表达式:表达式是可以被求值的代码,JavaScript 引擎会将其计算出一个结果
语句:语句是一段可以执行的代码
区别:
- 因为表达式可被求值,所以它可以写在赋值语句的右侧
- 而语句不一定有值,所以比如 alert() for和break 等语句就不能被用于赋值
- 某些情况,也可以把表达式理解为表达式语句,因为它是在计算结果,但不是必须的成分
程序三大流程控制语句
- 写几句就从上往下执行几句,这种叫顺序结构
- 有的时候要根据条件选择执行代码,这种就叫分支结构
- 某段代码被重复执行,就叫循环结构
分支语句
分支语句可以根据条件判定真假,来选择性的执行想要的代码
分支语句可以让我们有选择性的执行想要的代码
分支语句包含:
- if分支语句
- 三元运算符
- switch语句
if 分支语句
if语句有三种使用:单分支、双分支、多分支
单分支使用语法:
if(条件表达式) {
满足条件要执行的语句
}
-
小括号内的条件结果为 true 时,进入大括号里执行代码;为false,则不执行大括号里面代码
-
除了
0
和''
,所有数字和字符串都为true(真) -
小括号内的结果若不是布尔类型时,会发生类型转换为布尔类型
-
如果大括号只有一个语句,大括号可以省略
if双分支语句–P24 if双分支语句
如果有两个条件的时候,可以使用 if else 双分支语句
if (条件表达式){
满足条件要执行的语句
} else {
不满足条件要执行的语句
}
if 多分支语句–P25 if多分支语句
使用场景: 适合于有多个条件的时候
if(条件1){
代码1
}else if(条件2){
代码2
}else if(条件3){
代码3
}else {
代码n
}
释义:
先判断条件1,若满足条件1就执行代码1,其他不执行
若不满足则向下判断条件2,满足条件2执行代码2,其他不执行
若依然不满足继续往下判断,依次类推
若以上条件都不满足,执行else里的代码n
三元运算符(三元表达式)–P26 三元运算符
使用场景:其实是比 if 双分支更简单的写法,可以使用三元表达式
符号:? 与 : 配合使用
语法:
条件 ? 满足条件执行的代码 : 不满足条件执行的代码
- 一般用来取值
switch语句–P28 switch分支语句
使用场景: 适合于有多个条件的时候,也属于分支语句,大部分情况下和 if多分支语句 功能相同
switch(数据){
case 值1:
代码1
break
case 值2:
代码2
break
default:
代码n
break
}
释义:
- 找到跟小括号里数据全等的case值,并执行里面对应的代码
- 若没有全等
===
的则执行default里的代码
注意:
switch case
语句一般用于等值判断,不适合于区间判断, if 更适合于区间判断switch case
一般需要配合break关键字使用,没有break会造成case穿透- if 多分支语句开发要比switch更重要,使用也更多
断点调试–P29 断点调试
**作用:**学习时可以帮助更好的理解代码运行,工作时可以更快找到bug
浏览器打开调试界面
- 按F12打开开发者工具
- 点到源代码一栏 ( sources )
- 选择代码文件
**断点:**在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来
循环语句–P30 while循环
使用场景:重复执行指定的一段代码
while循环
while:在…. 期间,所以 while循环就是在满足条件期间,重复执行某些代码。
语法:
while (循环条件) {
要重复执行的代码(循环体)
}
释义:
- 跟if语句很像,都要满足小括号里的条件为true才会进入循环体执行代码
- while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳出
循环三要素:
循环的本质就是以某个变量为初始值,然后不断产生变化量,慢慢靠近终止条件的过程
-
初始值 (经常用变量)
-
终止条件(没有终止条件,循环会一直执行,造成死循环)
-
变量的变化量(用自增或者自减)
中止循环–P32 退出循环
break
退出循环
退出整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用(提高效率)
continue
结束本次循环,继续下次循环
退出本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue
无限循环
-
while(true)
来构造“无限”循环,需要使用break退出循环 -
for(;;)
也可以来构造“无限”循环,同样需要使用break退出循环
条件,循环会一直执行,造成死循环)
- 变量的变化量(用自增或者自减)
中止循环–P32 退出循环
break
退出循环
退出整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用(提高效率)
continue
结束本次循环,继续下次循环
退出本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue
无限循环
1.while(true) 来构造“无限”循环,需要使用break退出循环
2.for(;😉 也可以来构造“无限”循环,同样需要使用break退出循环