JS循环语句 (特别重要)
断点调试
作用:能够很好的理解代码运作的流程并且进行调试,在工作中找BUG
按f12 打开调试工具 点击源代码
选择代码文件
想要代码在哪一段运行停止就点击代码前的数字 这个标记叫断点
**断点:**当程序执行到这句有标记的代码会暂停下来
while循环
作用:不断重复某一段代码,循环能重复执行某一段代码。
本质:重复执行某一段代码,while :表达为在。。。期间内
while语法:
<script>
// 循环三大因素
// 起点
let i = 0
// 终点
while(i<100) {
document.write(`我循环了第${i}次了`)
// 自增
i++
}
</script>
三大因素:
1.变量的起始值
2.终止条件 (如果没有终止值 循环会一直执行 造成死循环)
3.变量变化量 (用自增或自减)
调试断点补充:
1.在自增上断点。
2.如果想分析一步一步循环,点击右侧播放,可以让程序走过一遍,再到断点停止。
3.此时观察控制面板和页面,每点击一遍就会执行一次
作用:用于后期观察代码执行到第一次了,查看代码运作的流程并调试
while案例1:
优化案例:用户弹出输入框,用户自己输入要循环几次,页面循环几次
我的代码:
<script>
let num = +prompt(`请输入循环次数`)
while (num<=100){
document.write(`月薪过万<br> `)
num++
}
</script>
困难点:我不知道小括号内的取值,当我取值为num>0时代码不执行
while案例2~3:
代码:
<script>
let i = 1
let sum = 0
while(i<=100) {
sum = sum + i
i++
}
document.write(`总和为${sum}`)
</script>
<script>
let i = 1
sum = 0
while (i<=100) {
/* if (i%2 === 0) {
sum += i;
}
无论 奇数偶数 都要执行 */
(i%2 === 0) && (sum += i)
i++
}
document.write(sum)
</script>
我的思考难点:
1.对于sum=sum+i 不够清晰
第一次进入是:0+1 增加自增 在更新进入第二次循环 0+1+2 直到0+1+2..100
2.对于循环的思路不够清晰
我的理解:
sum1 = 0+1
sum2 = 1+2
sum3 = 3/(0+1+2)+3
sum4 = 6/(0+1+2+3)+4
...
sum100 = (0+1+2....99)+100
循环也就是一步一步逐步到我们想要的最后一步,然后就跳出循环输出
while案例4:
我的代码:
<script>
let box,money=0
while(box!=4) {
box = +prompt(`请选择你的操作
1取款 2存款 3多少钱 4退出`)
if (box===1) {
let num1 = +prompt(`请输入取款数量`)
money -= num1
}else if (box===2){
let num2 = +prompt(`输出存款数量`)
money += num2
}else if (box===3){
money=alert(`${money}元`)
}
}
</script>
老师解题思路:
1.打开页面 弹出对话框 无限弹窗功能 (循环条件)
2.用户输入内容(根据用户输入的分支结构)
输1弹1 在回到第一个弹窗
输2弹2 在回到第一个弹窗
输3弹3 在回到第一个弹窗
输4退出
3.实现加减的细节 (在分支结构中的细节)
总结:
1.当没有头绪,找之前类似案例
2.必须用文字把需求逐步分析出来,梳理脑海的思路
循环-for
for循环语法:
与while语法差不多,不过更加简洁。
<script>
/*
循环的原理
先执行 let i = 1
执行 i <= 100 满足条件
执行 consloge
执行 i++,
执行 i <= 100 满足条件
执行 consloge
执行 i++
......一直循环到不满足条件
*/
for (let i = 1; i<=100; i++) {
console.log(i)
}
</script>
案例1(用for):
代码:
<script>
let sum=0
for (let i=1; i<=100; i++) {
if (i%2 === 0 ){
sum = sum + i
}
}
console.log(sum)
</script>
案例二:
代码:
<script>
let s = ''
for (let i = 0; i < 5; i++) {
s += '★'
}
document.write(s + '<br>')
</script>
不是循环变量的初始值写在for外边
1.明确循环次数用for
2.不明确循环次数用while 如**“!=4”**
退出循环
循环结束:
continue:结束本次循环,继续下次循环
<script>
/* continute 也就是跳过本代码循环
也可以通过if-else 实现效果 不一定用 */
for (let index = 1; index <=10; index++) {
if(index%2!=0){
console.log(index)
continue
}
console.log(index)
}
</script>
break:跳出所在的循环
<script>
/* break表示直接斩断!不循环了
可以通过if-else 来实现功能
推荐使用 break 因为直接斩断 优化性能 */
for (let index1 = 1; index1 <=10; index1++) {
if (index1 === 5){
break
}
console.log
}
</script>
for循环嵌套
for循环应用
需求:
代码:
<script>
// 这是最外层循环 三天
for (let index = 1; index <=3; index++) {
document.write(`第${index}天<br>`)
// 这是三天里面的 每一天背的单词
for (let index1 = 1; index1 <=5; index1++) {
document.write(`记住第${index1}个单词<br>`)
}
}
/* 思路:第一个外层要背几天
每一天要背几个单词 (嵌套在外层背几天)*/
</script>
解题思路:
1.首先明确外层循环是谁(外层循环要背几天)
2.其次是明确内层嵌套的循环(每天要背几个单词)
增加难度 :几天背几个单词可以由用户决定
<script>
let num1 = +prompt(`背几天`),
num2 = +prompt(`一天背几个`)
for (let index = 1; index <=num1; index++) {
document.write(`第${index}天<br>`)
// 这是三天里面的 每一天背的单词
for (let index1 = 1; index1 <=num2; index1++) {
document.write(`记住第${index1}个单词<br>`)
}
}
// 思路:终点是确定变量,这里变量是 背的天数 改变成变量
</script>
**思路:**因为用户决定要背几天和背几个,所以第一步明确变量,把具体值改为变量。