0
Help us understand the problem. What are the problem?

Python の input( ) と同様の挙動を JavaScript, Node.js で再現する

私と同じ悩みを持つ方のために、共有させていただきます。
以下のQAにてご指導頂いた内容ですので、経緯等は以下のページを参照ください。

動作

実行すると数字1を聞かれます(今回は10を入力)。

入力すると数字2を聞かれます(今回は20を入力)。

コンソールに入力した数字と、その和を出力してくれます。
つまり、Pythoninput()のように使えます。

サンプルコード

const readline = require('readline/promises');

const input = async (name) => {
    const readInterface = readline.createInterface({
        input: process.stdin,
        output: process.stdout,
    });
    let string = await readInterface.question(name)
    readInterface.close();
    return string
}

(async () => {
    let a = Number(await input('数値1>'));
    let b = Number(await input('数値2>'));
  
    console.log(a);
    console.log(b);
    console.log(a + b);
  })();

// ※何も書かない方が良い

*以降は何も書かない方が良いです。async以下実行されてしまいます。

動作環境

Node.js v18.1.0

'readline/promises' モジュールを仕様しているのでNode.jsのバージョンは17.0以上が必要かと思います。

version 16 以下の場合はこちら

Promise を利用したコード
const readline = require('readline');
 
const input = prompt =>{
    const readInterface = readline.createInterface({
        input: process.stdin,
        output: process.stdout,
    });
    return new Promise( resolive =>readInterface.question(prompt,
        input=>{
            readInterface.close();
            resolive(input);
        }));
};
 
(async () => {
    let a = Number(await input('数値1>'));
    let b = Number(await input('数値2>'));
  
    console.log(a);
    console.log(b);
    console.log(a + b);
  })();

最後に

Pythonで書くとこうなります。

a = int(input('数字1>'))
b = int(input('数字2>'))

print(a)
print(b)
print(a + b)

Python流行る理由がなんとなくわかりました。
ですが、JavaScriptも魅力的な言語なので、引き続き勉強していきます。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?