Как получить консольный ввод в JavaScript-пауке?

В настоящее время я использую spidermonkey для запуска своего кода JavaScript. Мне интересно, есть ли функция для получения ввода с консоли, аналогичная тому, как это делает Python:

var = raw_input()  

Or in C++:

std::cin >> var;

Я осмотрелся и все, что я нашел до сих пор, это как получить ввод из браузера, используя функции prompt() и confirm().


person camel_space    schedule 25.06.2010    source источник


Ответы (4)


Старый добрый readline();.

См. MDN (архив).

person MooGoo    schedule 25.06.2010
comment
Кажется, я не могу использовать при использовании node.js. Любая идея? - person eran otzap; 11.12.2014
comment
См. ответ на этот вопрос: stackoverflow.com/questions/26683734/ - person deltaray; 29.01.2017

В простом JavaScript просто используйте response = readline() после вывода подсказки.

В Node.js вам потребуется использовать модуль readline: const readline = require('readline')

person Zaz    schedule 20.07.2016
comment
` вар х = readline(); ^ TypeError: readline не является функцией `после добавления require в начало файла - person anon58192932; 14.11.2017
comment
Тоже была такая же проблема. - person Devin Haslam; 05.01.2018
comment
Это более странно, чем когда-либо. - person Machado; 26.09.2018
comment
readline не работает в node. вам нужно что-то вроде этого: const readline = require('readline').createInterface({ input: process.stdin, output: process.stdout }) readline.question(как вас зовут? , name =› { console.log(Hello ${name} );readline.close(); }); - person kDar; 06.01.2020
comment
@kDar Я предпочитаю name =› { readline.close(); console.log(имя); } В моем случае ваша версия не показывает ввод при вводе. В любом случае, спасибо за ваш комментарий - person Marco M. von Hagen; 18.07.2020

Как вы упомянули, 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.

person Keyvan    schedule 03.03.2019

Вы можете попробовать что-то вроде 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 будет очень полезен.

person Levi Lawliet    schedule 10.09.2020