我目前正在使用 spidermonkey 来运行我的 JavaScript 代码。我想知道是否有一个函数可以从控制台获取输入,类似于 Python 的执行方式:
var = raw_input()
或者在 C++ 中:
std::cin >> var;
我环顾四周,到目前为止我发现的只是如何使用prompt()
andconfirm()
函数从浏览器获取输入。
我目前正在使用 spidermonkey 来运行我的 JavaScript 代码。我想知道是否有一个函数可以从控制台获取输入,类似于 Python 的执行方式:
var = raw_input()
或者在 C++ 中:
std::cin >> var;
我环顾四周,到目前为止我发现的只是如何使用prompt()
andconfirm()
函数从浏览器获取输入。
好老readline();
。
请参阅MDN(存档)。
在纯 JavaScript 中,只需response = readline()
在打印提示后使用。
在 Node.js 中,您需要使用readline 模块:const readline = require('readline')
正如您所提到的,它prompt
适用于浏览器一直到 IE:
var answer = prompt('question', 'defaultAnswer');
对于 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.
披露我是控制台读写的作者和维护者
您可以尝试类似的东西process.argv
,也就是说,如果您正在使用node.js
来运行程序。
console.log(process.argv)
=> 将打印一个包含
[
'/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 包yargs将非常有帮助。