【发布时间】:2020-02-14 17:57:45
【问题描述】:
似乎 AngularJS 的 angular.isNumber 不起作用。它不适用于数字字符串。难道我做错了什么?我应该只使用isNaN()吗?
angular.isNumber('95.55') == false
angular.isNumber('95.55' * 1) == true
angular.isNumber('bla' * 1) == true
angular.isNumber(NaN) == true
我需要一些东西来查看一个字符串是否是一个数字(实际上是),除非我乘以 1,否则angular.isNumber() 不会让我这样做,但如果我这样做,那么它总是正确的。 NaN 也不是数字(根据定义),因此应该返回 false。
【问题讨论】:
-
什么不起作用? '95.55' 不是一个数字,它是一个字符串。同样,将一个字符串乘以一个数字,javascript 会将该字符串解析/转换为一个数字并尝试执行该操作。连接的工作方式不同,因为数字 + 字符串将是一个字符串(javascript 将数字转换为字符串)。
-
像这样使用:angular.isNumber(+num || num),如果 num 是字符串/对象/等。在 NaN 上是首选。所以,它实际上是检查源是否为数字。
-
查看stackoverflow.com/a/1830844/504836 以获取有效的
IsNumeric方法。 -
我认为这不是链接问题的重复。这个问题是关于 angularJS isNumber 方法的预期行为。它与 NaN 是否被视为“数字”类型无关。
标签: javascript angularjs