首页 > 解决方案 > 在带有 if 语句的函数中检查某物是否为数字

问题描述

我想要一个函数接受两个参数,如果它们都是数字来告诉我哪个更大。如果它们中的一些不是数字,我也希望它给出一个很好的输出(因为它无论如何都无法计算它)。

我已经到了能够处理 int 但不能处理浮点数的地步。它超越了我的头脑,我想知道把它写下来的最佳做法是什么。

这是我到目前为止得到的;

var iamanumbergenius = function(a, b) {
if (Number.isInteger(a) && Number.isInteger(b)) {
if (a > b) {
  console.log('first is greater');
  } else if (b > a) {
  console.log('second is greater');
  } else {
  console.log('equality is the answer');
  }
} else { console.log('i only like nums'); }
}

对不起丑陋的代码,直接从 chrome 开发工具中带出来,没有什么可以不焦虑地按 Enter XD

很确定我错过了一些方法或类型的东西......也许还有一些布尔操作符和 number.isfloat?在那种情况下,我不确定在操作顺序方面之前是什么:|| 和 &&..

谢谢!我对这些东西真的很陌生,所以任何帮助都会很棒:)

标签: javascriptfunctionif-statementnumbers

解决方案


因为整数和浮点数都typeof返回number,所以您可以将它用于您的函数。

示范typeof

console.log(typeof 1.3);

以下是您在函数中实现它的方式:

if (typeof a === 'number' && typeof b === 'number')

另外,因为typeof NaN === 'number', you should useisNaN() in yourif` 语句也是:

if (typeof a === 'number' && typeof b === 'number' && !(isNaN(a) || isNaN(b)))

推荐阅读