0

我正在尝试让程序重复接受输入并重复输入,直到输入“退出”。现在循环没有运行,我不知道为什么,因为退出变量设置为 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,所以我按照相同的思路重写了这个循环。

4

3 回答 3

5

您已将“exit”声明为函数的参数,因此外部声明对函数内部的逻辑没有影响。当您调用它时,您不会将任何内容传递给该函数,因此“退出”是undefined并且===测试失败。

如果你将“exit”传递给函数,或者从函数声明中取出参数,它会起作用——也许. 该“读取”功能是异步的,因此我不确定节点的行为方式。

于 2013-11-07T22:54:40.510 回答
1

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();
于 2013-11-07T22:58:56.580 回答
0

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

    OutsideLoop( exit );

在最后一行。

于 2013-11-07T22:57:09.973 回答