如何在 Spider-Monkey JavaScript 中获得控制台输入?

我目前正在使用 Spider Monkey 来运行我的 JavaScript 代码。我想知道是否有一个从控制台获取输入的函数,类似于 Python 的做法:

var = raw_input()

或者用 C + + :

std::cin >> var;

我查看了一下,到目前为止,我发现的只是如何使用 prompt()confirm()函数从浏览器中获取输入。

216171 次浏览

好样的 readline();

MDN(存档)。

在普通 JavaScript 中,只需在打印提示符后使用 response = readline()

在 Node.js 中,需要使用 读出线模块读出线模块: const readline = require('readline')

正如你提到的,prompt可以在 IE 浏览器上工作:

var answer = prompt('question', 'defaultAnswer');

prompt in IE

对于 Node.js > v7.6,您可以使用 console-read-write,它是低级 readline模块的包装器:

const io = require('console-read-write');


async function main() {
// Simple readline scenario
io.write('I will echo whatever you write!');
io.write(await io.read());


// Simple question scenario
io.write(`hello ${await io.ask('Who are you?')}!`);


// Since you are not blocking the IO, you can go wild with while loops!
let saidHi = false;
while (!saidHi) {
io.write('Say hi or I will repeat...');
saidHi = await io.read() === 'hi';
}


io.write('Thanks! Now you may leave.');
}


main();
// I will echo whatever you write!
// > ok
// ok
// Who are you? someone
// hello someone!
// Say hi or I will repeat...
// > no
// Say hi or I will repeat...
// > ok
// Say hi or I will repeat...
// > hi
// Thanks! Now you may leave.

我是控制台读写的作者和维护者

对于 SpiderMonkey,按照 @ MooGoo@ Zaz的建议使用简单的 readline

您可以尝试类似于 process.argv的东西,也就是说,如果您使用 node.js来运行程序。
将打印包含以下内容的数组

[
'/usr/bin/node',
'/home/user/path/filename.js',
'your_input'
]

您可以通过数组索引(即 console.log(process.argv[3]))获得用户提供的输入,这应该为您提供可以存储的输入。


例如:

var somevariable = process.argv[3]; // input one
var somevariable2 = process.argv[4]; // input two


console.log(somevariable);
console.log(somevariable2);

如果您正在构建一个命令行程序,那么 npm 软件包 院子将非常有帮助。

Js 有内置的 读数线模块。

举个例子:

const readline = require('readline')
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question(`Are you sure? (yes/no): `, async answer => {
if (answer.toLocaleLowerCase() === 'yes') {
console.log('processing...');
}
else {
console.log('aborting...');
}
});