2.1 运算符
2.1.1 赋值运算符
赋值运算符:对变量进行赋值的运算符
已经学过的赋值运算符:= 将等号右边的值赋予给左边, 要求左边必须是一个容器
其他赋值运算符:
<script>
//其他复制运算符 1.+= 2.-= 3.*= 4./= 5.%=
</script>
使用这些运算符可以在对变量赋值时进行快速操作
<script>
//以前我们变量+1是如何做到的
let num = 1
num = num + 1
console.log(num) //结果是 2
</script>
<script>
//现在有一个简单的写法
let num = 1
num += 1
console.log(num) //结果是 2
</script>
2.1.2 一元运算符
众多的 JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符
-
二元运算符:
例子
<script> let num = 10 + 20 </script>
-
一元运算符:正负号
-
自增:
符号:
++
作用:让变量的值
+1
用法:
<script> // 前置自增 每执行一次,当前的变量值+1 let num = 1 ++num //让num的值加1变2 //自增运算符的用法: //先自加再使用(记忆口诀:++在前 先加) let i = 1 console.log(++i + 2) //结果是4 // 注意:i 是 2 // i 先自加 1 ,变成 2 之后,在和后面的 2 相加 </script>
<script> // 后置自增 每执行一次,当前的变量值+1 let num = 1 num++ //让num的值加1变2 //自增运算符的用法: //先使用再后加(记忆口诀:++在后 后加) let i = 1 console.log(i++ + 2) //结果是3 // 注意:i 是 1 // 先和 2 相加,先运算输出完毕后,i 再自加是 2 </script>
- 前置自增和后置自增独立使用时二者并没有差别!
- 一般开发中我们都是独立使用
- 后面 i++ 后置自增会使用相对较多,并且都是单独使用
-
自减:
符号:
--
作用:让变量的值
-1
-
使用场景:经常用于计数来使用。 比如进行10次操作,用它来计算进行了多少次了
-
2.1.3 比较运算符
比较预算符:
> : 左边是否大于右边
< : 左边是否小于右边
>= : 左边是否大于或等于右边
<= : 左边是否小于或等于右边
== : 左右两边值是否相等
===: 左右两边是否类型和值都相等
!==: 左右两边是否不全等
比较结果为boolean类型,即只会得到 true 或 false
对比:
= 单等是赋值
== 是判断
=== 是全等
开发中判断是否相等,强烈推荐使用 ===
字符串比较,是比较的字符对应的ASCII码
从左往右依次比较
如果第一位一样再比较第二位,以此类推
比较的少,了解即可
NaN不等于任何值,包括它本身
涉及到"NaN“
都是false
尽量不要比较小数,因为小数有精度问题
不同类型之间比较会发生隐式转换
最终把数据隐式转换转成number
类型再比较
所以开发中,如果进行准确的比较我们更喜欢 ===
或者 !==
2.1.4 逻辑运算符
使用场景
逻辑运算符用来解决多重条件判断
<script>
//正确写法
num > 5 && num < 10
</script>
2.1.5 运算符优先级
2.2 语句
2.2.1 表达式语句
2.2.1-a 表达式
表达式是可以被求值的代码,JavaScript 引擎会将其计算出一个结果
<script>
x = 7
3 + 4
num++
</script>
2.2.1-b 语句
语句是一段可以执行的代码。
2.2.1-c 表达式和语句的区别:
表达式:
因为表达式可被求值,所以它可以写在赋值语句的右侧。
表达式 num = 3 + 4
语句:
而语句不一定有值,所以比如 alert()
for
和break
等语句就不能被用于赋值。
语句 alert()
弹出对话框 console.log()
控制台打印输出
某些情况,也可以把表达式理解为表达式语句,因为它是在计算结果,但不是必须的成分 (例 如continue
语句)
2.2.2 分支语句
2.2.2-a 程序三大流程控制语句
以前我们写的代码,写几句就从上往下执行几句,这种叫顺序结构
有的时候要根据条件选择执行代码,这种就叫分支结构
某段代码被重复执行,就叫循环结构
2.2.2-b if 分支语句
if
语句有三种使用:单分支、双分支、多分支
单分支的用法:
<script>
if (条件) {
满足条件要执行的代码
}
//括号内的条件为true时,进入大括号里执行代码
//小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型
//如果大括号只有一个语句,大括号可以省略,但是,俺们不提倡这么做~
</script>
双分支的语法:
<script>
if (条件) {
满足条件要执行的代码
} else {
不满足条件执行的代码
}
</script>
多分支的语法:
<script>
if (条件1) {
代码1
} else if (条件2){
代码2
} else if (条件3){
代码3
} else {
代码n
}
/* 释义:
先判断条件1,若满足条件1就执行代码1,其他不执行
若不满足则向下判断条件2,满足条件2执行代码2,其他不执行
若依然不满足继续往下判断,依次类推
若以上条件都不满足,执行else里的代码n
注:可以写N个条件,但这里演示只写2个 */
</script>
2.2.3 三元运算符
使用场景: 其实是比 if
双分支 更简单的写法,可以使用 三元表达式
符号:?
与 :
配合使用
语法:
<script>
let num
num > 1 ? console.log('num大于1') :console.log('num小于1')
// 条件 ? 满足条件执行的代码 : 不满足条件执行的代码
// 一般用来取值
</script>
2.2.4 switch 语句
<script>
switch (数据) {
case :
代码1
break
case :
代码2
break
default :
代码n
break
}
/* 释义:
找到跟小括号里数据全等的case值,并执行里面对应的代码
若没有全等 === 的则执行default里的代码
例:数据若跟值2全等,则执行代码2 */
/* 注意事项:
1. switch case语句一般用于等值判断,不适合于区间判断
2. switch case一般需要配合break关键字使用 没有break会造成case穿透 */
</script>
2.3循环语句
2.3.1断点调试
作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug
浏览器打开调试界面
按F12
打开开发者工具
点到sources/源代码
一栏
选择代码文件
断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来
2.3.2 while循环
1.循环的基本语法
<script>
while (循环条件) {
要重复执行的代码(循环体)
}
/*释义:
跟if语句很像,都要满足小括号里的条件为true才会进入 循环体 执行代码。
while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,若 满足又执行大括号里的代码,然后再回到小括号判断条件,直到括号内条件不满足,即跳 出 */
</script>
2.while循环三要素:
a.变量起始值
b.终止条件(没有终止条件,循环会一直执行,造成死循环)
c.变量变化量(用自增或者自减)
2.3.3 循环退出
1.continue
:结束本次循环,继续下次循环
2.break
:跳出所在的循环
二者的区别:
continue 退出本次循环,一般用于排除或者跳过某一个选项的时候, 可以使用continue
break 退出整个循环,一般用于结果已经得到, 后续的循环不需要的时候可以使用