javascript - 在提示中指定变量类型

标签 javascript

此代码执行的是字符串连接,而不是数字加法。 如何指定提示字段输入的类型(如:数字、字符串)。

var jonage = prompt("enter the johns age");
var jonHeight = prompt("enter the johns height");
var jonScore = jonHeight + jonage * 5;
console.log(jonScore);

最佳答案

prompt 是非常基本的,除了浏览器默认的方式(例如,没有换行符)之外,没有提供任何方式来约束输入。

相反,之后将字符串转换为数字。有很多方法可以做到这一点:

  • 一元+:var jonage = +prompt("输入约翰年龄");
  • 数字:var jonage = Number(prompt("输入约翰年龄"));
  • parseInt: var jonage = parseInt(prompt("输入约翰年龄"));
  • parseFloat: var jonage = parseFloat(prompt("输入约翰年龄"));

一元+数字:

...以同样的方式工作:

  • 如果可能,它们会将整个字符串转换为数字,如果整个字符串无法转换为数字,则生成 NaN。所以 +"123abc"NaN
  • 它们将空字符串 ("") 转换为 0(令人惊讶)。
  • 它们遵循 JavaScript 语法来指定基数(基数),因此 +"0x10" 为 16,+"0o10"8 >.

parseInt

  • 仅转换第一个无效字符之前的尽可能多的字符串,而不是整个字符串。所以 parstInt("123abc")123
  • 将空字符串 ("") 转换为 NaN(不是 0)。
  • 遵循用于指定数字基数(基数)的 JavaScript 语法,例如,parseInt("0x10") 是 16。
  • 另外允许您显式指定基数作为第二个参数,以强制它将输入视为采用该数字基数:parseInt("0x10", 10)0(因为 x 无效,0x 不再被视为指示数字基数。此使用 对于十进制很重要,以防最终用户输入诸如 "010" 之类的字符串,并且浏览器实现了“旧版”八进制(前导 0 而不是前导 0o),但自从 parseInt 被正式不允许这样做以来,已经过去八年了(自 5th edition spec 以来)。
  • 顾名思义,仅转换字符串中定义整个数字(整数)的部分。

parseFloat

parseInt类似,但处理小数而不处理基数前缀。 parseFloat("0x16")0,因为 x 无效(因为它不执行基数前缀)。

关于javascript - 在提示中指定变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48227631/

相关文章:

javascript - 使用 for of 循环时如何将值传递回生成器函数

javascript - 使用javascript删除字符

javascript - Jquery 处理函数 + requireJs

javascript - 我有一个具有父 id 的平面数组,我想将其嵌套起来,就像使用 javascript 的树父子数组一样

JavaScript ADODBE 连接更新查询不起作用

javascript - 单击并拖动仅抓取对象的一部分

javascript - 根据耗时更新变量

javascript - 创建对象时交叉引用 js-object 变量

javascript - Node.js 连接无法正确提供图像

javascript - 如何将整个 SVG 图像文件夹(或如何动态加载它们)导入 React Web App?