一. 运算符
算术运算符
-
优先级
- 乘、除、取余优先级相同
- 加、减优先级相同
- 乘、除、取余优先级大于加、减
- 使用( )可以提升优先级
- 总结 先乘除取模, 再加减, 有括号先算括号
-
eg: 计算圆形的面积
<script>
/*
需求:对话框中输入圆的半径,算出圆的面积并显示到页面
*/
let r = prompt('请输入圆的半径')
document.write(`您输入的半径是${r},计算出的记结果是${3.14 * r * r}`)
</script>
赋值运算符
-
对变量进行赋值的运算符
-
=
- 赋值
-
+=
- a = a + 1
- a += 1
-
-=
- a = a - 1
- a -= 1
-
*=
- a = a * 1
- a *= 1
-
/=
- a = a / 1
- a /= 1
-
%=
- a = a % 1
- a %= 1
一元运算符
-
只需要一个表达式就可以运算的运算符
-
++ 自增
-
使用场景 经常用于记数来使用
-
前置自增 先自加再使用 (++在前 先加)
-
后置自增 先使用再自加 (++在后 后加)
-
前置自增和后置自增单独使用时没有区别
-
案例
- 结果:7
- 结果: 18
-
-
-- 自减 (与自增同理)
比较运算符
- 比较两个数据大小、是否相等
> 左边是否大于右边
< 左边是否小于右边
>= 左边是否大于或等于右边
<= 左边是否小于或等于右边
== 左右两边是否相等 只判断类型不匹配类型
=== 左右两边是否类型和值都相等
!== 左右两边是否不全等
比较结果为boolean类型 即只会得到true或false
逻辑运算符
- 用来解决多重条件判断
-
短路
- 只存在于 && 和 || 中,当满足一定条件会让右边代码不执行
- 原因 通过左边能得到整个式子的结果, 因此没必要再判断右边
- 运算结果:无论 && 还是 || ,运算结果都是最后被执行的表达式值,一般用在变量赋值
-
优先级
- 一元运算符里面逻辑非优先级很高
- 逻辑与比或优先级高
二. 语句
表达式和语句
- 表达式: 一组代码的集合, JavaScript解释器会将其计算出一个结果
- 语句: js整句或命令, js语句以分号结束(可以省略,换行代替)
分支语句
-
分支语句可以让我们有选择性的执行想要的代码 if语句
-
单分支
if (条件) {
满足条件要执行的代码
}
- 案例
-
括号内的条件为true时,进入大括号里执行代码
-
小括号内的结果若不是布尔类型时,会发生隐式转换转为布尔类型
-
用户输入高考成绩,如果分数大于700,则提示恭喜考入黑马程序员
-
<script>
let score = +prompt('请输入你的高考成绩')
if (score >= 700) {
alert('恭喜你考入黑马程序员')
}
</script>
- 双分支
if (条件) {
满足条件要执行的代码
}else{
不满足条件要执行的代码
}
eg1
//已知用户工资10000
//用户输入工龄
//如果工龄大于1年,奖金+2000 并输出工资最终金额,
//否则输出 您本年无奖金。
let money = 10000
let num = +prompt('请输入你的工龄')
if (num >= 1) {
alert(`你的工资为${money + 2000}`)
}
else {
alert('您本年无奖金')
}
** eg2**
// 闰年平年
// 能被4整除并且不能被100整除
// 或者
// 能被400整除的年份是闰年,否则都是平年
let year = +prompt('请输入年份')
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
console.log(`${year}年为润年`);
} else {
console.log(`${year}年为平年`);
}
- 多分支
if (条件1) {
代码1
} if (条件2) {
代码2
} if (条件3) {
代码3
} else {
不满足条件要执行的代码
}
eg
<script>
// 1. 用户输入时间 等我们学完api 自动获取时间
// 实现 12点前提示上午好 18点前提示下午好 20点前提示晚上好
let time = +prompt('请您输入现在几点了')
if (time < 12) {
alert('上午好')
} else if (time < 18) {
alert('下午好')
} else if (time < 20) {
alert('晚上好')
} else {
alert('早点睡觉!!!')
}
</script>
-
三元运算符
-
其实是比 if 双分支 更简单的写法,有时候也叫做三元表达式
-
符号:? 与 : 配合使用
-
语法
-
eg1
<script>
// 让用户分别输入两个数字,比较大小,并把最大值输出在页面中
let num1 = +prompt('请输入第一个数字')
let num2 = +prompt('请输入第二个数字')
num1 > num2 ? alert(`${num1}大于${num2}`) : alert(`${num1}小于${num2}`)
</script>
eg2
<script>
// 数字补零案例
let num = +prompt('请输入一个数字')
num >= 10 ? alert(num) : alert('0' + num)
</script>
- switch语句
<script>
let num = +prompt('请输入一个数字')
switch (nun) {
case 1:
console.log('您输入的是1');
break;
case 2:
console.log('您输入的是2');
break;
case 3:
console.log('您输入的是3');
break;
case 4:
console.log('您输入的是4');
break;
default:
console.log('您的输入有误');
break;
}
</script>
-
-
注意事项
-
- switch case语句一般用于等值判断, 不适合于区间判断
-
- switch case一般需要配合break关键字使用 没有break会造成case穿透
-
eg: 简单运算器
<script>
let num1 = +prompt('请输入第一个数字')
let num2 = +prompt('请输入第二个数字')
let op = prompt('请输入 + - * / 其中的一个符号')
switch (op) {
case '+':
document.write(`您输入的第一个数字是${num1}, 第二个数字是${num2}, 符号是${op}, 得到的结果是 ${num1 + num2}`)
break;
case '-':
document.write(`您输入的第一个数字是${num1}, 第二个数字是${num2}, 符号是${op}, 得到的结果是 ${num1 - num2}`)
break;
case '*':
document.write(`您输入的第一个数字是${num1}, 第二个数字是${num2}, 符号是${op}, 得到的结果是 ${num1 * num2}`)
break;
case '/':
document.write(`您输入的第一个数字是${num1}, 第二个数字是${num2}, 符号是${op}, 得到的结果是 ${num1 / num2}`)
break;
default:
document.write(您输入的符号有误)
break;
}
</script>
三. while循环
循环: 以某个变量为起始点, 然后不断产生变化量, 慢慢靠近终止条件的过程
循环三要素
-
- 变量起始值
-
- 终止条件(没有终止条件,循环会一直执行,造成死循环)
-
- 变量变化量(用自增或者自减)
eg1
<script>
// 1. 输出 1~100个数字
let i = 1
while (i <= 100) {
document.write(`${i} <br>`)
i++
}
// 2. 计算1~100 的累加和 1+2+3+.. + 100 = 5050
let j = 1
let sum = 0
while (j <= 100) {
sum += j
j++
}
console.log(sum);
// 3. 求 1~100 之间的偶数累加和 2550
let a = 1
let sum2 = 0
while (a <= 100) {
if (a % 2 == 0) {
sum2 += a
}
a++
}
console.log(sum2);
// 4. 你爱我吗案例
// 页面弹出对话框,'你爱我吗',如果输入'爱',则结束,否则一直弹出对话框
let love = false
while (love !== '爱') {
love = prompt('李狗蛋爱张翠花吗?')
}
</script>
eg2
<script>
/*
1. 由于操作提示是一直弹出的,所以prompt 应该写在循环体里面
2. 根据用户输入不同的数字,从而实现不同的操作逻辑,所以应该用switch case 分支语句
3. 由于4是退出,所以可以得知循环条件
4. 取款即为减法操作 存款即为加法操作 查看余额为输出操作
*/
let sum = 0
let num
while (num !== 4) {
num = +prompt(`
请选择功能:
1. 查看余额
2. 存钱
3. 取钱
4. 退出
`)
switch (num) {
case 1:
alert(`您的余额为${sum}`)
break;
case 2:
sum += +prompt('输入存钱金额')
alert(`存钱成功, 您的余额为${sum}`)
break;
case 3:
sum -= +prompt('输入取钱金额')
alert(`取钱成功, 您的余额为${sum}`)
break;
case 4:
num = 4
break;
default:
alert('输入有误')
break;
}
}
</script>