运算符
运算符就是一种告诉编译器执行特定的数学或逻辑操作的符号,用来表示针对数据的特定操作,也称之为操作符。
算术运算符
+ 加法
-减法
*乘法
/ 除法
%取余
计算圆的面积
面积的数学公式: π*r²
转换为JavaScript写法 : 变量 * r * r
let r = rompt('请输入圆的半径')
let s = 3.14 * r * r
conlose.log(s)
JavaScript算术运算符执行的*优先级顺序
同时使用多个运算符编写程序时,会按着某种顺序先后执行,我们称为优先级。
JavaScript中 优先级越高越先被执行,优先级相同时以书从左向右执行。
➢ 乘、除、取余优先级相同
➢ 加、减优先级相同
➢ 乘、除、取余优先级大于加、减
➢ 使用 () 可以提升优先级
➢ 总结: 先乘除后加减,有括号先算括号里面的
赋值运算符
➢ 已经学过的赋值运算符:= 将等号右边的值赋予给左边, 要求左边必须是一个容器
➢ 其他赋值运算符:
➢ +=
➢ -=
➢ *=
➢ /=
➢ %=
使用这些运算符可以在对变量赋值时进行快速操作
将等号右边的值赋予给左边, 要求左边必须是一个容器
let num =1
num = num+1
console.log(num) //结果是2
//简写方法:
let num =1
num +=1
console.log(num) //结果是2
一元运算符
众多的 JavaScript 的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符
二元运算符:let num = 10+20;
一元运算符:* let num = 1
num += 1
一元运算符做自增运算
自增:
➢ 符号:++
➢ 作用:让变量的值 +1
自减:
➢ 符号:--
➢ 作用:让变量的值 -1
使用场景:
经常用于计数来使用。 比如进行10次操作,用它来计算进行了多少次了
let num=1
++num //让num的值加1变2 前置自增
console.log(++num +2) //结果是4
let num=1
num++ //让num的值加1变2 后置自增
console.log(num++ +2) //结果是3 第二次使用才加
let i=1
console.log(i++ + ++i + i)
2 + 3 + 3
前后置自增的区别
前置:先自增后运算
后置:先运算后自增
自减同理..
➢ 开发中,我们一般都是单独使用的,后置++ 使用更多
比较运算符
作用:比较两个数据大小,是否相等
字符串比较,是比较的字符对应的ASCII码
NaN不等于任何值,包括它本身
⚫ 尽量不要比较小数,因为小数有精度问题
⚫ 不同类型之间比较会发生隐式转换
最终把数据隐式转换成number类型再比较
所以开发中,如果进行准确的比较 我们更喜欢=== 或者!==
= 和 == 和 === 怎么区别?
➢ = 是赋值
➢ == 是判断 只要求值相等,不要求数据类型一样即可返回true
➢ === 是全等 要求值和数据类型都一样返回的才是true
逻辑运算符
逻辑运算符的介绍
逻辑运算符的使用
| 符号 | 名称 | 日常读法 | 特点 | 口诀 | ||
|---|---|---|---|---|---|---|
| && | 逻辑与 | 并且 | 符号两边都为true 结果才为true | 一假则假 | ||
| 逻辑或 | 或者 | 符号两边有一个true就为true | 一真则真 | |||
| ! | 逻辑非 | 取反 | true变false false变true | 真1变假,假变真 |
⚫ 提问:如果我想判断一个数据大于5且小于10,怎么办?
let num = prompt('请输入数字')
console.log(num>=5 && 10>=num)
⚫ 需求:判断这个数能否被4整除 但是不能被100整除。
let num = +prompt('输入数字')
console.log(num % 4 == 0 && num % 100 !== 0)
出短路运算符的运算规则
逻辑运算符里的短路
短路:只存在于 && 和 || 中,当满足一定条件会让右边代码不执行
| 符号 | 短路条件 | ||
|---|---|---|---|
| && | 左边为false就短路 | ||
| 左边为true就短路 |
⚫ 原因:通过左边能得到整个式子的结果,因此没必要再判断右边
⚫ 运算结果:无论 && 还是 || ,运算结果都是最后被执行的表达式值,一般用在变量赋值
注意:
在js中,转换bool为false的值有:0 '' "" undefined null NaN,其它都为true
运算符优先级
掌握运算符优先级,能判断运算符执行的顺序
语句
表达式和语句
表达式和语句的区别
⚫ 语句:
js 整句或命令,js 语句是以分号结束(可以省略)
比如: if语句 for 循环语句
区别:
表达式计算出一个值,但语句用来自行以使某件事发生(做什么事)
➢ 表达式
3 + 4
➢ 语句
alert() 弹出对话框
其实某些情况,也可以把表达式理解为语句,因为它是在计算结果,也是做事
分支语句
程序三大流程控制语句
⚫ 以前我们写的代码,写几句就从上往下执行几句,这种叫顺序结构
⚫ 有的时候要根据条件选择执行代码,这种就叫分支结构
⚫ 某段代码被重复执行,就叫循环结构
⚫ 分支语句可以让我们有选择性的执行想要的代码
⚫ 分支语句包含:
if分支语句
三元运算符
switch语句
if语句
⚫ if语句有三种使用:单分支、双分支、多分支
单分支使用语法:
if(条件){
满足条件要执行的代码
}
双分支if语法:
if(条件){
满足条件要执行的代码
}else{
不满足条件要执行的代码
}
案例2:让用户输入年份,判断这一年是闰年还是平年并输出
let score = +prompt('输入年份')
if ((score % 4 == 0 && score % 100 !== 0) || score % 400 === 0) {
console.log('闰年')
} else {
console.log('平年')
}
案例3:多分支if课堂案例:根据输入不同时间,输出不同的问候语
let hour = + prompt('输入时间')
if (hour < 6) {
console.log('凌晨好')
} else if (hour < 12) {
console.log('上午好')
} else if (hour < 18) {
console.log('下午好')
} else if (hour <= 24 || hour > 25) {
console.log('晚上好')
} else {
console.log('你是傻逼吗 哪有这个时间段')
}
三元表达式
其实是比 if 双分支 更简单的写法,有时候也叫做三元表达式
⚫ 符号:? 与 : 配合使用
⚫ 语法:
⚫ 一般用来取值
条件 ? 满足条件执行的代码 : 不满足条件执行的代码
//输入两个值 输出最大的那个值
let num1 = +prompt('输入第一个值')
let num2 = +prompt('输入第二个值')
max = max == num1 > num2 ? num1 : num2
console.log(max)
switch语句
能利用switch执行满足条件的语句
找到跟小括号里数据全等的case值,并执行里面对应的代码
➢ 若没有全等 ===的则执行default里的代码
➢ 例:数据若跟值2全等,则执行代码2
简单计算器
let num1 = +prompt('输入第一个值')
let num2 = +prompt('输入第二个值')
let opt = prompt('输入算法')
if (opt == '+') {
opt = num1 + num2
} else if (opt == '-') {
opt = num1 - num2
} else if (opt == '*') {
opt = num1 * num2
} else {
if (num2 == 0) {
alert('0不能被除')
} else {
opt = num1 / num2
}
}
循环
循环结构**
断点调试
作用:学习时可以帮助更好的理解代码运行,工作时可以更快找到bug
⚫ 浏览器打开调试界面
- 按F12打开开发者工具
- 点到sources一栏
- 选择代码文件
⚫ 断点:在某句代码上加的标记就叫断点,当程序执行到这句有标记的代码时会暂停下来
// while循环:满足条件,就重复做一个事件
// 语法:while(循环条件){循环体--循环操作}
// while:关键字,固定写死
// 循环条件:它是一个bool值,一般是条件表达式或者是逻辑表达式,也可以是一个变量,如果是一个变量,它会自动的进行类型转换,转换为bool值:在js中转换为bool结果为false的有:'' "" 0 undefined null NaN
// 特性:只要满足条件就会重复执行这个操作
// 细节:循环一定要考虑什么时候结构,循环一定要有结构条件
循环的执行过程:
循环条件满足 》》执行循环体(让变量+1) 》》条件判断(满足) 》》执行循环体 》》 条件判断(满足) 》》 执行循环体 。。。。判断条件(不满足) 》》 退出循环
调试断点:
打开网页》》打开检查》》打开sources》》点击文件》》
for循环嵌套
for(外部声明记录循环次数的变量;循环条件;变量值){
for(内部声明记录循环次数的变量;循环条件;变化值){
循环体
}
}
案例:
页面中打印出3行5列的星星★
let sum = ''
for (i = 0; i <= 5; i++) {
sum += '😔'
}
console.log(sum);
while循环
while(循环条件){
要重复执行的代码(循环体)
}
循环:重复执行某段代码, 而 while : 在…. 期间
2. while 循环注意事项:
循环的本质就是以某个变量为起始值,然后不断产生变化量,慢慢靠近终止条件的过程。
所以,循环需要具备三要素:
- 变量起始值
- 终止条件(没有终止条件,循环会一直执行,造成死循环)
- 变量变化量(用自增或者自减)
页面弹框(案例)
页面弹出对话框, '你爱我吗',如果输入'爱‘,则结束,否则一直弹出对话框
let ai = prompt('你爱不爱我')
while (ai !== '爱') {
ai = prompt('你爱不爱我')
}
提款机案例
需求:用户可以选择存钱、取钱、查看余额和退出功能
let money = 1000
let choice = undefined
while (choice != 4) {
choice = +prompt(`请执行操作:
1.取款
2.存款
3.查看余额
4.退出`)
if (choice == 1) {
let out = +prompt('请输入取款金额')
if (out <= money) {
money = money - out
} else {
alert('余额不足')
}
} else if (choice == 2) {
let cun = +prompt('请输入存款金额')
money += cun
} else if (choice == 3) {
alert(`这是你的余额${money}`)
} else if (choice == 4) {
}
}
for和while:
知道循环次数的时候推荐使用for循环
不知道循环次数的时候使用while循环