我不断地发现自己在这些循环中,我正在处理用户输入,以确保我得到了预期的结果。然而,如果不在函数定义之前调用它,我不知道如何做到这一点,这给我带来了eslint error:no-use-before-define。
function tryAgain(){
alertBadInput();
getInput();
}
function getInput(){
var input = askForInput();
if (input === 'bad') {
tryAgain();
return;
}
processInput(input);
}
无论我定义这两个函数的顺序是什么,其中一个函数将在定义之前调用另一个函数。
它看起来在语法上是有效的,但是考虑到eslint错误,如果我希望避免这个错误,我还可以使用什么模式?
发布于 2018-10-29 08:57:10
尽管两个函数可以相互调用,但为了清晰起见(这就是它的用途)并遵循避免错误的编码标准,您可能会更好地使用while
循环,如下所示:
function getInput() {
var no_valid_input = true;
var input = null;
while (no_valid_input) {
input = askForInput();
if (input !== 'bad') {
no_valid_input = false;
} else {
alertBadInput();
}
}
processInput();
}
工作示例:
function processInput() {
return alert('Yep, processing...');
}
function alertBadInput() {
return alert('Nope');
}
function askForInput() {
return prompt('What?');
}
function getInput() {
var no_valid_input = true;
var input = null;
while (no_valid_input) {
input = askForInput();
if (input !== 'bad') {
no_valid_input = false;
} else {
alertBadInput();
}
}
processInput();
}
getInput();
https://stackoverflow.com/questions/53037345
复制相似问题