如何在spidermonkey JavaScript中获得控制台输入?

IT技术 javascript input console spidermonkey
2021-03-16 22:02:52

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

var = raw_input()  

或者在 C++ 中:

std::cin >> var;

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

4个回答

好老readline();

请参阅MDN(存档)。

看这个问题的答案:stackoverflow.com/questions/26683734/...
2021-04-29 22:02:52
使用 node.js 时我似乎无法使用 .. 知道吗?
2021-05-14 22:02:52

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

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

` var x = readline(); ^ TypeError: readline is not a function ` 在文件顶部添加 require 后
2021-04-22 22:02:52
也遇到了同样的问题。
2021-05-05 22:02:52
readline 在节点中的工作方式不同。你需要这样的东西: const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout }) readline.question("你叫什么名字?", name => { console.log ( Hello ${name}); readline.close(); });
2021-05-09 22:02:52
@kDar 我更喜欢做 name => { readline.close(); 控制台日志(名称);就我而言,您的版本在键入时不显示输入。无论如何,谢谢你的评论
2021-05-11 22:02:52
这比以往任何时候都更奇怪。
2021-05-13 22:02:52

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

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

IE 中的提示

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

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建议的那样简单

您可以尝试类似的方法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将非常有用。