一、运算符
1、赋值运算符
赋值运算符:对变量进行赋值的运算符
将 = 号右边的值赋予给左边,要求左边必须是一个容器
其它赋值运算符:`+=,-=,*=,/=,%=`;使用这些运算符可以在对变量赋值时进行快速操作
let num = 1
num += 1
console.log(num) //2
2、一元运算符:正负号
前置自增:++i
let num = 1
++num
console.log(num) //2
后置自增:i++
let n = 1
n++
console.log(n) //2
前置自增 后置自增 单独使用没有任何区别
但是前置自增和后置自增如果参与运算就有区别:
前置自增:先自加再运算
后置自增:先运算再自加
let i = 1
console.log(i++ + ++i + i)
最后输出 i 为 7
3、三元运算符
由 ? 和 : 这两个符号组成
语法: 条件 ? 满足条件执行代码1 : 不满足条件执行代码2
//用户输入3个数字,最后输出最大的那个数字
let num1 = +prompt('请输入第一个数字')
let num2 = +prompt('请输入第二个数字')
let num3 = +prompt('请输入第三个数字')
let max = num1>num2 ? num1 : num2
max = max>num3 ? max : num3
alert(max)
4、比较运算符
'>' '<' '>=' '<=' 这些就是比大小
== 左右两边的值是否相等
=== 左右两边的值 和 类型是否都相等(全等)
!== 左右两边是否不全等
!= 不等
5、逻辑运算符
逻辑运算符用来解决多重条件判断
符号 | 名称 | 日常读法 | 特点 | 简记法 |
---|---|---|---|---|
&& | 逻辑与 | 并且 | 符号两边条件需要全部满足 | 一假全假 |
|| | 逻辑或 | 或者 | 符号两边条件满足一个即可 | 一真全真 |
! | 逻辑非 | 取反 | 比较叛逆,true变false,false变true | 真变假,假变真 |
6、运算符优先级
一元运算符里面的逻辑非优先级很高
逻辑与比逻辑或优先级高
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 | () |
2 | 一元运算符 | ++ -- ! |
3 | 算数运算符 | 先 * / % + - |
4 | 关系运算符 | > >= < <= |
5 | 相等运算符 | == != === !== |
6 | 逻辑运算符 | 先 && 后 || |
7 | 赋值运算符 | = |
8 | 逗号运算符 | , |
二、语句
1、表达式和语句
表达式是可以被求值的代码,它是有结果的(简单理解表达式就是一个式子)
语句是一段可以执行的代码,它是没有结果的
2、分支语句
根据一定的条件去选择执行某段代码,这就是分支语句
3、if分支
if语句有三种使用:单分支、双分支、多分支
单分支
语法:
if(条件){
满足条件执行的代码
}
当小括号里面的条件为 true 时,进入大括号执行代码
当小括号里面的条件不是布尔类型时,会发生隐式转换,转换为布尔类型
//1、用户输入分数
let scroe = +prompt('请输入分数')
//2、判断
if(scroe >= 700){
document.write('恭喜您加入本校');
}
双分支
语法:
if(条件){
满足条件执行的代码
}else{
不满足条件执行的代码
}
满足条件,执行if里面的代码,不满足,则执行else里面的代码
//1、输入用户名 密码
let uname = prompt('请输入用户名')
let pwd = prompt('请输入用密码')
//2、判断
if (uname === '加钱居士' && pwd==="得加钱") {
alert('恭喜成功登录')
}
else{
alert('用户名或者密码输入错误')
}
多分支
语法:
if(条件1){
代码1
}else if (条件2){
代码2
}else if (条件3){
代码3
}else{
代码n
}
先判断条件1,如果满足,就执行代码1
如果不满足,则向下判断条件2 ,满足就执行,不满足则向下继续判断,以此类推
若是以上条件都不满足,则执行else里面的代码n
let score = +prompt('请输入分数')
if (score >= 90){
alert(`你的分数是${score},优秀`)
}
else if(score >=70){
alert(`你的分数是${score},良好`)
}
else if(score >=60){
alert(`你的分数是${score},及格`)
}
else{
alert(`你的分数是${score},不及格`)
}
// 条件可以写无数个
4、switch语句
语法:
switch (表达式) {
case 值1:
代码1
break
case 值2:
代码2
break
case 值3:
代码3
break
default:
代码n
break
}
找到跟小括号里面表达式数据 全等=== 的case值,并执行里面相应的代码
若是没有全等 === 的,则执行最后default里面的代码
let subject = +prompt('选择发放的奖品:1-电脑,2-手机,3-平板,4-手表')
switch (subject){
case 1:
alert('恭喜你获得了电脑')
break
case 2:
alert('恭喜你获得了手机')
break
case 3:
alert('恭喜你获得了平板')
break
case 4:
alert('恭喜你获得了手表')
break
default :
alert('没有该选项')
}
三、循环
作用:重复执行一些操作
while循环
语法:
while(循环条件){
重复执行的代码(循环体)
}
let money = 1
while(money <= 10){
document.write('月薪百万 </br>')
money++
}
跟if语句很像,都是需要满足小括号里面的条件为true 才会进入循环体,执行代码
while 大括号里面的代码执行完毕后不会跳出,而是继续会到小括号里面判断条件是否满足
如果满足,就继续执行大括号里面的代码,然后再回到小括号判断条件,直到括号内条件不满足,才会跳出
循环三要素:
1、变量起始值
2、终止条件(没有终止条件,循环会一直执行,造成死循环)
3、变量变化量 (用自增或者自减)
<script>
<!-- 1. 变量的起始值 -->
let i = 1
<!-- 2. 终止条件 -->
while (i <= 3) {
document.write('我要循环三次 <br>')
<!-- 3. 变量的变化量 -->
i++
}
</script>
循环退出
continue 退出本次循环,一般用于排除或者跳过某个选项的时候,可以使用continue
break 退出整个循环,一般用于结果已经得到,后续的循环不需要的时候,才会使用
四、if多分支与Switch的区别
1、共同点
都能实现多分支选择
大部分情况下可以互相转换.
2、区别
Switch...case 语句通常处理case 为比较 确定值的情况
而 if...else...语句更加的灵活,通常 适用于 范判断(比如说 大于等于某个范围)
Switch语句 进行判断后直接执行到程序的语句,效率更高
而 if...else语句,有几种判断条件,就需要判断多少次
Switch 一定要注意 必须是 === 全等,一定注意数据类型,同时注意 break ,否则会有穿透效果
结论:
当分支比较少的时候,if...else语句执行效率更高
当分支比较多的时候,Switch语句执行效率更高,而且结构更加情绪