gpt4 book ai didi

javascript - 如何从子函数中取出父函数 'return' ?

转载 作者:行者123 更新时间:2023-12-03 05:52:22 29 4
gpt4 key购买 nike

我经常在项目中使用 verifyInput 函数来确保从用户那里获得有效的输入。我时不时地希望能够从 verifyInput 中退出父函数。 verifyInput 通常会被赋予一个 prompt() 函数。提示,有取消键。如果单击“取消”,我想退出嵌套表达式。我该怎么做?

function verifyInput(foo, value){
const input = foo();
if (!isNaN(input) && !input || input === null || input === undefined){
if(input === null){
/*The input is null, because they hit the cancel button. I should exit myLoop here.*/
} else {
alert("Not valid.");
}
return verifyInput(foo,value);
} else {
if(value && input.search(value) < 0){
alert("'"+[input]+"' is not a valid input.");
return verifyInput(foo,value);
}else{
return input;
}
}
}

function myFunc(){
var myInput = verifyInput( () => prompt("What is your input?"));
alert(myInput);
return myFunc();
}
myFunc();

最佳答案

除非抛出异常,否则无法直接从 verifyInput 直接停止调用者 (myLoop) 的执行。

正如其他人所说,您可以检查 myLoop 的返回值以有条件地停止它。

但也许更干净的解决方案是使用回调,只有当输入不是“exit”时才会调用该回调。此回调将负责获取输入(如果输入有效)并再次调用 myFunc 以继续循环。示例:

function verifyInput(prompter, callback) {
var value = prompter()

if (value === "exit") {
return // don't proceed with the callback if `value` is "exit"
}

if (invalid(value)) { // function to be implemented
alert("invalid")
return verifyInput(prompter, callback)
}

callback(value)
}

function myFunc() {
var prompter = () => prompt("What is your input?")
verifyInput(prompter, (value) => {
console.log(value) // logs the input
myFunc()
})
}

myFunc()

fiddle :https://jsfiddle.net/guisehn/r1Lwxkhp/

关于javascript - 如何从子函数中取出父函数 'return' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40093858/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com