为什么不是';当循环在节点中运行时,是否使用此javascript?

为什么不是';当循环在节点中运行时,是否使用此javascript?,javascript,node.js,while-loop,Javascript,Node.js,While Loop,我试图使它,使程序重复接受输入,并重复它回来,直到“退出”输入。现在循环没有运行,我不知道为什么,因为exit变量被设置为false。这是我的密码: var read = require("read"); var exit = false; function OutsideLoop (exit) { while(exit === false){ read({prompt: "> "}, function (err, result) { consol

我试图使它,使程序重复接受输入,并重复它回来,直到“退出”输入。现在循环没有运行,我不知道为什么,因为exit变量被设置为false。这是我的密码:

var read = require("read");
var exit = false;


function OutsideLoop (exit) {

while(exit === false){

        read({prompt: "> "}, function (err, result) {

        console.log("");
        console.log(result);
        console.log("Type in more input or type 'exit' to close the program.");

        if(result === "exit"){
            exit = true;};
        });


};

};


OutsideLoop();
谢谢你们的帮助。我有一个类似的循环,使用if/then而不是while,所以我按照同样的思路重写了这个循环

您已将“exit”声明为函数的参数,因此外部声明对函数内部的逻辑没有影响。调用函数时,您没有向函数传递任何内容,因此“exit”是未定义的,并且测试失败

如果您将“exit”传递给函数,或者从函数声明中取出参数,它将起作用-可能。“read”函数是异步的,因此我不确定节点将如何运行。

您已将“exit”声明为函数的参数,因此外部声明对函数内部的逻辑没有影响。调用函数时,您没有向函数传递任何内容,因此“exit”是未定义的,并且测试失败


如果您将“exit”传递给函数,或者从函数声明中取出参数,它将起作用-可能。“read”函数是异步的,所以我不确定节点将如何工作。

调用该函数时,您没有通过exit。应该是:

    OutsideLoop( exit );

在最后一行。

调用函数时没有通过exit。应该是:

    OutsideLoop( exit );

在最后一行。

Pointy关于隐藏您声明的外部变量的参数是正确的。然而,最终会出现一个可怕的繁忙循环。Node.js是基于事件的;正确使用它的事件

function promptUser() {
    read({prompt: "> "}, function(err, result) {
        console.log();
        console.log(result);
        console.log("Type in more input or type 'exit' to close the program.");

        if(result !== "exit") {
            promptUser();
        }
    });
}

promptUser();

Pointy关于参数隐藏您声明的外部变量的说法是正确的。然而,最终会出现一个可怕的繁忙循环。Node.js是基于事件的;正确使用它的事件

function promptUser() {
    read({prompt: "> "}, function(err, result) {
        console.log();
        console.log(result);
        console.log("Type in more input or type 'exit' to close the program.");

        if(result !== "exit") {
            promptUser();
        }
    });
}

promptUser();

如果(!exit)exit=false,则可以说
外部循环中
函数位于代码的最顶端。那么您就不需要传递参数了。@PHPglue:不,这仍然是指相同的
exit
。因为退出循环只有一个条件,所以在(exit!==true){do stuff}
时执行
更简单。看起来我必须再次教您一些@minitech。当@Ber在没有参数的情况下调用
OutsideLoop()
时,它是
未定义的
,因此我的评论是正确的。这绝对不是您应该提示的方式。如果(!exit)exit=false,您可以说
外部循环中
函数位于代码的最顶端。那么您就不需要传递参数了。@PHPglue:不,这仍然是指相同的
exit
。因为退出循环只有一个条件,所以在(exit!==true){do stuff}
时执行
更简单。看起来我必须再次教您一些@minitech。当@Ber在没有参数的情况下调用
OutsideLoop()
时,它是
未定义的
,因此我的评论是正确的。