吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1474|回复: 11
收起左侧

[已解决] JS基础:while循环 (两个不同的小例子)

[复制链接]
clearwater 发表于 2020-2-14 12:50
本帖最后由 clearwater 于 2020-2-14 17:24 编辑

1、以下载屏幕是某前端的视频教程。我想知道为什么 第29行里面的 循环体还要把 弹出来的 prompt 赋值给message? 我觉得第29行的赋值是没有必要的。但是我不清楚为啥视频中老师要这样写呢?
(第27行要赋值当变量,我清楚。因为要引进循环中,来做判断。我不懂的是29行
123.PNG

2. while里面只是能写判断吗? 不能把初始化,以及变量的变化都写在条件中?
我这样写是不是错辣?
while ( var j = 1;  j <= 100;  j++)

1234.PNG

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

米饭大师 发表于 2020-2-14 13:13
最简单的办法就是你把29行去掉了,看看和不去掉有什么变化
dafei2599 发表于 2020-2-14 14:48
1.prompt 是弹窗,不写会只弹上面那一次,也可以改成这样
while(prompt("您爱我吗?") != "我爱你) {
}
2.while里只支持单条语句,你的写法是语法错误,可以用for
 楼主| clearwater 发表于 2020-2-14 15:02
dafei2599 发表于 2020-2-14 14:48
1.prompt 是弹窗,不写会只弹上面那一次,也可以改成这样
while(prompt("您爱我吗?") != "我爱你) {
}

欢迎新人大神,谢谢大神!

关于第1个问题,我没看您的意思。

我把第29行的message这个单词去掉,只留下prompt弹窗 , 然后和加了message = prompt("你爱我吗“)两个的效果看起来是一样的?

while的里面的语句不是如果条件(28行)为真,程序就会执行循环体的语句吗? 为什么会弹出上一句呢?


dafei2599 发表于 2020-2-14 15:12
clearwater 发表于 2020-2-14 15:02
欢迎新人大神,谢谢大神!

关于第1个问题,我没看您的意思。

29行的message= 去掉?这样循环回到28行,判断message的值时,还是27行的内容,所以如果27行弹窗输入的不是我爱你,就是一直弹 下去,不会停止。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
clearwater + 1 + 1 谢谢@Thanks!

查看全部评分

15053087 发表于 2020-2-14 15:17
1. 29行的message赋值在while语句中是必须的,因为你使用了msg进行判断,否则当输入条件满足时,也就是我爱你时,但message的值还是你爱我吗,循环不会得到结束。因此在while语句内必须将message的值进行重新赋值。

2. 正常的while语句就是对条件的判断,一般是对布尔值的判断,括号内是条件表达式,不能是语句。

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
clearwater + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| clearwater 发表于 2020-2-14 15:18
dafei2599 发表于 2020-2-14 15:12
29行的message= 去掉?这样循环回到28行,判断message的值时,还是27行的内容,所以如果27行弹窗输入的不 ...

非常感谢。这么简单的问题,我之前都没有想明白。

我还有一个小问题请教:

for 的条件不可以写

for ( a ==b) {
}

这样的判断条件吗? 只能写 var i = 1; i <=100; i++)这样的计算吗?
 楼主| clearwater 发表于 2020-2-14 15:33
15053087 发表于 2020-2-14 15:17
1. 29行的message赋值在while语句中是必须的,因为你使用了msg进行判断,否则当输入条件满足时,也就是我爱 ...

谢谢新人大神。那for的条件可不可以写成 a==b ?

我发现好象只能写循环的次数对吗? 如果要写条件,只能在for 里面加if, else?
senile_zhang 发表于 2020-2-14 15:57
本帖最后由 senile_zhang 于 2020-2-14 16:53 编辑

问题1

你的疑惑点可能在于你的老师在循环内外写了两遍赋值语句:

message = prompt('你爱我吗?');

然后你觉得这样写有点多余?
首先这样写是可以的,其他楼层也给出了为什么,不过从代码优雅性上讲可以改成下面两种:

var message = '';
while(message !== '我爱你') {
    message = prompt('你爱我吗?');
}

do {
    var message = prompt('你爱我吗?');
} while(message !== '我爱你');

问题2

while的判断条件内虽然可以进行初始化、赋值之类的操作,但非常不建议这么做,因为不够优雅。
while内最好只做纯逻辑运算,不要有任何副作用。
建议参考airbnb的js风格指南来规范自己的代码

 楼主| clearwater 发表于 2020-2-14 16:25
senile_zhang 发表于 2020-2-14 15:57
[md]# 问题1
你的疑惑点可能在于你的老师在循环内外写了两遍赋值语句:
```js

谢谢大神。

1、能不能回答一下本楼第7层的问题?for 里面是不是只能写计数和终止条件?
如果要写条件,是不是只能在for 里面嵌 if?

2、为什么您喜欢用MD?  如果代码多的话,也不能指出第几行?


您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-14 02:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表