javascript - 如何检查一个数字是否为负数?

标签 javascript negative-number

我想检查一个数字是否为负数。我正在寻找最简单的方法,因此预定义的 JavaScript 函数是最好的,但我还没有找到任何东西。这是我目前所拥有的,但我认为这不是一个好方法:

function negative(number) {
  if (number.match(/^-\d+$/)) {
    return true;
  } else {
    return false;
  }
}

最佳答案

与其编写函数来执行此检查,不如使用以下表达式:

(number < 0)

Javascript 将首先尝试将左侧转换为数字值,然后再检查它是否小于零,从而评估此表达式,这似乎是您想要的。


规范和细节

x < y 的行为在§11.8.1 小于运算符 (<) 中指定,它使用§11.8.5 抽象关系比较算法

如果两者都x,情况就大不相同了。和 y是字符串,但由于右侧已经是 (number < 0) 中的数字,比较将尝试将左侧转换为要进行数值比较的数字。如果左边不能转换为数字,则结果为false .

请注意,与基于正则表达式的方法相比,这可能会产生不同的结果,但根据您尝试执行的操作,它最终可能会做出正确的事情。

  • "-0" < 0false ,这与 -0 < 0 的事实一致也是false (参见:signed zero)。
  • "-Infinity" < 0true (承认无穷大)
  • "-1e0" < 0true (接受科学记数法)
  • "-0x1" < 0true (接受十六进制文字)
  • " -1 " < 0true (允许使用某些形式的空格)

对于上述每个示例,正则表达式方法的计算结果都是相反的(true 而不是 false,反之亦然)。

引用资料

另见


附录 1:条件运算符 ?:

也应该说这种形式的陈述:

if (someCondition) {
   return valueForTrue;
} else {
   return valueForFalse;
}

可以重构为使用三元/条件 ?:运算符 ( §11.12) 简单地:

return (someCondition) ? valueForTrue : valueForFalse;

?: 的惯用用法可以使代码更加简洁易读。

相关问题


附录2:类型转换函数

Javascript 具有您可以调用以执行各种类型转换的函数。

类似下面的内容:

if (someVariable) {
   return true;
} else {
   return false;
}

可以使用 ?: 进行重构运算符(operator):

return (someVariable ? true : false);

但是你也可以进一步简化为:

return Boolean(someVariable);

这调用了 Boolean作为函数 (§15.16.1) 执行所需的类型转换。您可以类似地调用 Number作为一个函数 ( §15.17.1 ) 执行数字转换。

相关问题

关于javascript - 如何检查一个数字是否为负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3571717/

相关文章:

javascript - tensorflowjs 层 api 的输入输出张量如何工作

php - 如何根据另一个值设置一个值的符号

c - 读取任意内存位置使程序崩溃

javascript - 从文件中单独检索 HTML5 视频持续时间

javascript - 在 requestAnimationFrame 中每隔 x 秒调用一个函数

javascript - 如何使用参数设置 Express 路线

hadoop - Hive:处理存储在 HDFS 中的数据中的负数

java - 忽略 Java Arraylist 中的负值进行计算

java - 为什么 double 乘以 -1 不会给出当前答案的负数

javascript - onClick 事件只留下 DOM 数组的最后一项而不是移除目标