[英]How to accept an input in the console from the user (JS)?
我试图创建一个 JavaScript 程序,它在输入时输出英文字母的二进制格式。 我必须将值放入代码中。 程序运行时如何在控制台输入值?
function returnBinaryLetter(char) {
return ((/^[a-z]$/).test(char)) ? char.charCodeAt(0).toString(2).padStart(8, '0') : 'Sorry, that is not a letter.'
}
// Something like:
// const input = consoleInputFunction('Enter a number.');
// console.log(returnBinaryLetter(input.toLowerCase()));
编辑 1:这不适用于网页。 这是一个 JS 程序,我将使用 Node.js 运行它。我需要一个只有 JS 的解决方案,而不是一些框架(如果可能的话,只是为了具体提及)。
编辑 2:在 Endothermic Dragon 的回答中提出建议后,我改进了代码。
要直接回答您的问题,在这种情况下,您将使用prompt
获取用户输入。
但是,您不需要所有这些代码。 尝试这个:
function returnBinaryLetter(char) { if ((/^[az]$/).test(char)) { return char.charCodeAt(0).toString(2).padStart(8, '0') } else { return 'Sorry, that is not a letter.' } } var input = prompt('Enter letter to be converted to binary:').toLowerCase(); console.log(returnBinaryLetter(input))
虽然它可能看起来有点吓人,但这是整个事情的分解:
prompt
请求输入,并将其转换为小写。returnBinaryLetter
,并记录 output。 现在对于 function returnBinaryLetter
:
嗯,但是二进制转换是如何工作的呢?
0
直到是。在这里,您可以看到与手动输入大约 28 行代码相比,更动态的转换看起来更短、更简洁。
惊喜,惊喜。 您可以进一步缩短它,使用三元运算符,您可以跳过if-else
语句。
function returnBinaryLetter(char) { return ((/^[az]$/).test(char))? char.charCodeAt(0).toString(2).padStart(8, '0'): 'Sorry, that is not a letter.' } var input = prompt('Enter letter to be converted to binary:').toLowerCase(); console.log(returnBinaryLetter(input))
现在,它是一条线!
当您要根据条件为其赋值时,通常在变量中使用三元运算符。 三元运算符首先检查括号内的条件是否为真,如果是,则返回第一个语句(在?
和:
之间),如果不是,则返回第二个语句(在:
之后)。 将此与 function 的return
语句配对,您将获得一个单行函数!
由于您似乎在关注CamelCase
,我想我会提到 function 名称应始终以大写字母开头,之后的每个单词也应以大写字母开头。 然而,变量是不同的——对于变量,您确实将第一个字母设为小写,但将所有其他单词设为大写。 此外,function 名称returnBinaryLetter
对您来说可能看起来很直观,但对于查看代码的任何人来说都不是。 准确描述其 function 的更直观的名称是LowercaseLetterToBinary
。
对于NodeJS ,您可以使用inquirer ,它为命令行提供不同类型的提示(例如文本、列表、复选框等)。
先决条件:
npm install inquirer
例子
const { prompt } = require("inquirer");
async main() {
const binaryLetter = await prompt({
type: 'input',
name: 'letter',
message: `What's your name >>`
})
.then(answer => returnBinaryLetter(answer['letter']));
}
main();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.