75

我目前正在使用 spidermonkey 来运行我的 JavaScript 代码。我想知道是否有一个函数可以从控制台获取输入,类似于 Python 的执行方式:

var = raw_input()  

或者在 C++ 中:

std::cin >> var;

我环顾四周,到目前为止我发现的只是如何使用prompt()andconfirm()函数从浏览器获取输入。

4

4 回答 4

57

好老readline();

请参阅MDN(存档)。

于 2010-06-25T19:21:51.110 回答
18

在纯 JavaScript 中,只需response = readline()在打印提示后使用。

在 Node.js 中,您需要使用readline 模块const readline = require('readline')

于 2016-07-20T06:30:21.773 回答
15

正如您所提到的,它prompt适用于浏览器一直到 IE:

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

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@Zazreadline所建议的那样简单。

于 2019-03-03T14:04:09.627 回答
0

您可以尝试类似的东西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将非常有帮助。

于 2020-09-10T11:27:05.257 回答