如何在javascript中获取控制台输入?


73

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

var = raw_input()  

或在C ++中:

std::cin >> var;

我环顾四周,到目前为止,我发现的所有内容都是如何使用hint()和Confirm()函数从浏览器获取输入。

Answers:



16

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

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


10
`var x = readline(); ^ TypeError:在文件顶部添加require之后,readline不是函数`
anon58192932,2014年

1
也有同样的问题。
Devin Haslam

1
那比以往任何时候都要奇怪。
马查多'18

2
readline在节点中无法正常工作。您需要这样的内容:const readline = require('readline')。createInterface({输入:process.stdin,输出:process.stdout})readline.question(“您的名字是什么?”,名称=> {console.log (Hello ${name}); readline.close();});
kDar

1
@kDar我更喜欢做name => {readline.close(); console.log(name); }就我而言,您的版本在键入时不显示输入。无论如何,感谢您的评论
Marco M. von Hagen

14

正如您提到的,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,readline@MooGoo@Zaz所建议的那样简单。


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会很有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.