我想知道是否有更短/更简单的方法来编写重复代码.如果在提示框中输入的名称没有任何内容,那么它将发送错误消息并重新输出.
就这样,我不必解释很多,继承人的代码:
function error() {
alert('You must enter a name.');
}
var Name = prompt('What is your name?', 'Name');
function repeat() {
var Name = prompt('What is your name?', 'Name');
if(Name === '') {
error();
repeat();
}
}
if(Name === '') {
error();
repeat();
}
Run Code Online (Sandbox Code Playgroud)
像这样:
var Name;
while(!(Name=prompt('What is your name?', 'Name'))) {
alert('You must enter a name.');
}Run Code Online (Sandbox Code Playgroud)
这个怎么运作
该while循环不断重复,直到满足条件.在这种情况下,条件是:
!(Name=prompt('What is your name?', 'Name'))
Run Code Online (Sandbox Code Playgroud)
表达式的这一部分将prompt值赋给Name(如您所知):
Name=prompt('What is your name?', 'Name')
Run Code Online (Sandbox Code Playgroud)
在JavaScript中,对变量的赋值也返回值.(这就是为什么我们可以链接分配,如a = b = c = 16.)
因此,如果您输入"Johnathan"作为名称,则此表达式将变为"Johnathan":
(Name=prompt('What is your name?', 'Name'))
Run Code Online (Sandbox Code Playgroud)
如果您不输入任何内容作为名称,则表达式将变为空字符串.
!表达式之前的逻辑NOT运算符()返回与表达式的"真实性"相反的布尔值.字符串值是真实的,但是空字符串是假的.
通过将NOT运算符应用于表达式:
!(Name=prompt('What is your name?', 'Name'))
Run Code Online (Sandbox Code Playgroud)
...循环将继续,直到Name变量具有值.
最后的想法:按照惯例,变量应该以小写字母开头.我没有在这里做过,因为name它是属性window,并且更改窗口的名称可能会导致问题.理想情况下,您的提示符将在函数内,因此您不会有任何全局变量.如果是这种情况,您可以name像其他人建议的那样使用该变量.
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |