在JS函数内部定义一个变量,然后在函数外部使用它?

4

这是我的代码,我正在开发一个Node.js应用程序,我想在函数内定义一个变量,然后能够在函数外使用它的值,我该如何实现?

var readline = require('readline');
var rl = readline.createInterface(process.stdin, process.stdout);
rl.setPrompt('guess> ');
rl.prompt();
rl.on('line', function (line) {
    inputl = line; //I belive not using Var makes the variable Global? am
    am I correct in thinking so?
            if (line === "correct")
        console.log('correct answer my    freind.')//rl.close();
    if (line === 'quit')
        rl.close();
    rl.prompt();
}).on('close', function () {
    process.exit(0);
});
{
    console.log(inputl);
}

感谢您的帮助,我已经转换到了sync.prompt,这解决了问题。您的答案确实有助于我理解js,所以它们确实有用。

因为我无法在外面做到这件事。 - alex tix
为什么你不能在外面定义它?只需将 var inputl 放置在脚本顶部即可。 - Mike Cluck
因为如果我在外部定义它,那么我之前的做法就行不通了。 - alex tix
好的,根据 ECMA-262 的规范,您需要对其进行重写。 :) - Microfed
1
这没有意义。如果您在外部定义它,则显示“不起作用”的代码。此外,定义“不起作用”。 - Mike Cluck
显示剩余4条评论
2个回答

1
在Node.js中,模块内的var varName定义了一个局部变量。这与JavaScript在浏览器中的行为不同。如果您必须从函数内定义全局变量,您可以在Node中使用global.input1 = line;参考

0

已编辑

Node 的顶层声明为:

var yourVar = '';

当在函数内部声明时,没有其他可访问的全局(global)

更多信息可以在这里阅读。


有没有 Node 的替代品? - alex tix
触及到这个问题,唯一的解决方法是在函数外部声明。var something; - Zak
我可以将函数设置为变量的值吗?例如 var myvar = function(myfunction); - alex tix
@Zak 为什么他们应该在那里寻找?无论是使用Node还是运行此代码在浏览器中都无关紧要。JavaScript的语义在任何环境下都是相同的。 - Mike Cluck
他要求变量在模块外可用...根据文档,这是不可能的...我可能错了,但根据文档...在模块内声明的变量会留在模块内。 - Zak
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接