算术运算符的优先级顺序:
<script>
let r = prompt('请输入半径值')
let result = 3.14 * r * r
document.write(`计算之后圆的面积是:${result}`)
</script>
赋值运算符:
num += 1 即为 num = num + 1
一元运算符:
像二元运算符,加减乘除这些,它至少需要两个数才能成立。
只有自增和自减,每次只能加减1
++属于一元运算符
前置自增和后置自增单独使用没有区别
前置自增,是先自加后使用,所以结果等于4
而后置自增是先使用,后自加,所以结果是3
解析:
i++是自增后置,需要先用后加,所以在这里i++ = 1,用完之后加一,到++i时 i = 2,所以++i = 2 +1 =3,此时i = 3,所以最后结果是1 +3 + 3 = 7
比较运算符:
=是赋值运算符,双等才是相等,但是在前端里真正要求的相等必须用三等: ===
这里因为有比较运算符,会把字符串’2’转化成数字型2,然后进行大小比较
逻辑运算符:
逻辑与:一假则假
逻辑或:一真全真
逻辑非:取反
10是真的,所以不短路
有五个值,是当false来看的,其余的都是真的(true)
在&&中,如果前面的就错了,就不会判断后面是否正确,直接判断错误,这种情况就是短路
逻辑或:
逻辑运算符——练习:
代码:
<script>
let num = prompt('请输入一个数字:')
console.log(num % 4 === 0 && num % 100 !== 0)
</script>
拓展:
(解释:考虑到用户不输入数字的情况,所以num要么是数字要么就是空字符串判断为0,方便程序判断)
<script>
let num = prompt('请输入一个数字:')
num = num || 0
console.log(num)
console.log(num % 4 === 0 && num % 100 !== 0)
</script>
运算符优先级:
注意:
一元运算符里面的逻辑非优先级很高
逻辑与 比逻辑或 优先级更高
表达式和语句及if分支:
表达式和语句:
分支语句:
代码:
<script>
if (3 < 5) {
console.log('真的')
}
</script>
小作业:
代码:
<script>
let num = prompt('请您输入高考成绩')
if (num > 700) {
alert('恭喜考入黑马程序员')
}
</script>
双分支课堂案例:
案例1:
方法1(其实里面prompt是需要在前面加+号的,为了转换数据类型为数字型,但是因为下面有比较运算符代替转换了,如果严谨一些的话要给它加+号)
<script>
let year = prompt('请输入您的工龄:')
let bonus = 0
if (year >= 1) {
// bonus为奖金的变量
bonus += 2000
console.log(bonus)
alert('年底给你加两千奖金')
} else {
console.log(bonus)
alert('你在想屁吃,没有年终奖')
}
</script>
方法2:
<script>
let year = prompt('请输入您的工龄:')
let money = 10000
if (year >= 1) {
alert(`您实发工资:${money + 2000}元`)
} else {
alert(`您实发工资:${money}元`)
}
</script>
案例2:
<script>
let time = +prompt('请您输入具体年份:')
if (time % 4 === 0 && time % 100 !== 0 || time % 400 === 0) {
alert(`${time}年是闰年`)
} else {
alert(`${time}年是平年`)
}
</script>
多分支语法案例:
(注意最后结尾else的格式 )
代码:
<script>
let time = prompt(`请输入现在的时间:`)
if (time < 12) {
document.write(`上午好,好好工作吧`)
} else if (time < 18) {
document.write(`下午好,好好工作吧`)
} else if (time < 20) {
document.write(`晚上好,好好加班吧`)
} else {
document.write(`夜深了还没睡觉吗`)
}
</script>
三元运算符:
三元运算符可以看作更简单的if分支写法
eg:
<script>
console.log(true ? 1 : 2)
console.log(false ? 1 : 2)
3 > 5 ? alert('第一个') : alert('第二个')
</script>
觉得以下代码有些冗杂,可以进行代码优化:
num1 < num2 ? console.log(num1) : console.log(num2)
优化代码:(将三元表达式放进变量声明中,让变量re代表最后选择哪个num)
let re = num1 > num2 ? num1 : num2
console.log(re)
案例1:
代码:
<script>
let num1 = +prompt('请输入数字1')
let num2 = +prompt('请输入数字2')
let re = num1 > num2 ? num1 : num2
document.write(re)
</script>
案例2:
<script>
let num = +prompt('请输入一个数字')
let re = num >= 10 ? num : '0' + num
document.write(re)
</script>
switch语句:
它的检索效率是最高的,会直接去找对应的代码。
eg:
<script>
switch (1) {
case 1:
alert(1)
break
case 2:
alert(2)
break
case 3:
alert(3)
break
default:
alert('没有数据')
break
}
</script>
案例:
代码:(因为switch要求数据和值必须全等,所以在case后面的符号需要加引号,确保它是字符串类型)
<script>
let num1 = +prompt('请输入第一个数')
let num2 = +prompt('请输入第二个数')
let operator = prompt('请输入运算符+ - * / 运算')
switch (operator) {
case '+':
alert(`您选择的是加法,结果是:${num1 + num2}`)
break;
case '-':
alert(`您选择的是加法,结果是:${num1 - num2}`)
break;
case '*':
alert(`您选择的是加法,结果是:${num1 * num2}`)
break;
case '/':
alert(`您选择的是加法,结果是:${num1 / num2}`)
break;
default:
alert(`请正确输入`)
break;
}
</script>
**
循环语句:
**
断点可以查看整个过程中某个阶段某个数据的数值。
while循环:
循环一定要注意避免电脑死循环。
循环要注意三要素
案例:
代码:
案例练习:
练习1:
<script>
// 1. 输出1~100个数字
// 起始值
let i = 1
// 终止条件
while (i <= 100) {
document.write(`<p>${i}</p>`)
// 变量变化
i++
}
</script>
效果:
练习2:求1-100之间的总和,答案5050
let j = 1
let sum = 0
while (j <= 100) {
sum += j
j++
}
document.write(`总和输出为:${sum}`)
效果:
练习3:求1-100之间的偶数和,答案2550
let k = 1
let sum1 = 0
while (k <= 100) {
if (k % 2 === 0) {
sum1 += k
}
k++
}
document.write(`<p>偶数和为:${sum1}</p>`)
效果:
循环退出:
continue:
break:
while循环-案例-页面弹框
<script>
while (true) {
let i = prompt('如果我是DJ,你会爱我吗?')
if (i === '爱') {
alert('我也是')
break
}
}
</script>
综合案例——简易ATM取款机
代码:
let sum = 1000
while (true) {
let num = +prompt(`请选择您需要的服务:
1.存款
2.取款
3.查看余额
4.退出`)
if (num === 4) {
// 除非输入的数值是4可以退出循环,否则继续弹出对话框
break
} else {
switch (num) {
case 1:
let int = +prompt(`请选择存款金额:`)
sum = sum + int
alert(`您成功存款${int}元,余额为${sum}元`)
break
case 2:
let out = +prompt(`请选择取款金额:`)
if (out <= sum) {
sum = sum - out
alert(`成功取出${out}元,余额为${sum}元`)
} else {
alert(`很抱歉,您的余额不足`)
}
break
case 3:
alert(`您的余额是${sum}元`)
break
default:
alert(`输入错误,请重新输入`)
break
}
}
}
作业:
1.打印0-20之间的整数, 将每个数输出到控制台
ex:
<script>
let i = 1
while (i <= 10) {
console.log(i)
i++
}
</script>
2.计算1-1000之间的和(答案是500500)
ex:
<script>
let i = 1
let sum = 0
while (i <= 1000) {
sum += i
i++
}
document.write(`1-1000之间的总和是:${sum}`)
</script>
3.用户输入一个数, 计算 1 到这个数的和。
比如 用户输入的是 5, 则计算 1~5 之间的累加和
ex:
<script>
let i = prompt(`请输入一个数字:`)
let sum = 0
let j = 1
while (j <= i) {
sum = sum + j
j++
}
document.write(`计算总和为:${sum}`)
</script>
4.用户登录验证
题目描述:
接收用户输入的用户名和密码,若用户名为 “admin” ,且密码为 “123456” ,则提示用户登录成功! 否则,让用户一直输入。
题目提示:
利用while循环
我的答案:
<script>
let id = prompt(`请输入用户名`)
let pwd = +prompt(`请输入密码`)
while (true) {
if (id == 'admin' && pwd == '123456') {
alert(`登录成功`)
break
} else {
alert(`请重新输入`)
id = prompt(`请输入用户名`)
pwd = +prompt(`请输入密码`)
}
}
</script>
参考答案:
let msg = prompt('名字')
let pwd = prompt('密码')
while (msg !== 'admin' || pwd !== '123') {
alert('请你先登录')
msg = prompt('名字')
pwd = prompt('密码')
}
alert('登录成功')
05-用户输入分数,根据分数奖励不同的车( 利用多分支语句 )
- 90~100分 奖励法拉利
- 80~90分 奖励奥迪
- 60~80分 奖励奥拓
- 60分以下 打一顿
let i = prompt(`请输入您的成绩:`)
if (i < 60) {
alert(`拖出去打一顿`)
} else if (i < 80) {
alert(`奖励奥拓`)
} else if (i < 90) {
alert(`奖励奥迪`)
} else {
alert(`奖励法拉利`)
}
拓展作业:
(答案为4570)
let i = 1
let sum = 0
while (i <= 100) {
if (i % 10 !== 3) {
sum += i
}
i++
}
document.write(sum)