You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript技术问题:如何仅打印数字,避免输出NaN及非数字字符?

解决仅打印有效数字的问题

原代码的核心问题是判断逻辑错误:NaN和任何值比较的结果都是false,而且prompt返回的是字符串类型,哪怕输入数字也是字符串,没法直接用NaN做判断,所以输入字符时条件永远成立,会直接打印输入内容。

修正方案

  1. 先把用户输入的内容转成数字类型
  2. 用严谨的方法判断是否为有效数字
  3. 处理用户取消输入的情况

修正后的代码

var inputNumber = prompt("What is your Number");
var myName = prompt("What is your name");
// 将输入转为数字,非数字/空输入/取消操作都会得到NaN
var myNumber = Number(inputNumber);

if (!Number.isNaN(myNumber)) {
  document.write("My Number is " + myNumber + " ");
} else {
  document.write("This is not a valid number ");
}
document.write("& My Name is " + myName);

代码说明

  • Number(inputNumber):把字符串输入转为数字,非数字内容、空输入或用户点取消都会转为NaN
  • Number.isNaN(myNumber):专门判断值是否为NaN,比全局isNaN()更准确(全局方法会先把非数字类型转成数字,容易出现误判)

如果需要限制输入为整数,可以再加一层判断:

if (!Number.isNaN(myNumber) && Number.isInteger(myNumber)) {
  document.write("My Number is " + myNumber + " ");
} else {
  document.write("This is not a valid integer ");
}

内容的提问来源于stack exchange,提问作者Junaid Khalid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:15:37