【问题标题】:Check for NaN in ClojureScript在 ClojureScript 中检查 NaN
【发布时间】:2013-06-03 18:02:58
【问题描述】:

如何检查值是否为NaN?我更喜欢可以在 Clojure 中使用的解决方案,而无需太多额外的东西(所以我不想使用外部库,例如下划线)。这是我尝试过的

(number? js/NaN) ;=> true, well I'd expect false
(= js/NaN (js/parseInt "xx")) ;=> false
(= js/NaN js/NaN) ;=> false, even worse

; This is the best I could come up with
(defn actual-number? 
  [n] 
  (or (> 0 n) (<= 0 n)))

【问题讨论】:

    标签: clojure nan clojurescript


    【解决方案1】:

    请注意

    (js/isNaN [1,2])

    返回真。 js/isNaN 与预期不符的情况还有很多。

    如果您在浏览器中使用 underscore.js,则可以委托给 (.isNaN js/_ ..)。

    否则,下面的函数应该可以解决问题:

    (defn isNaN [node]
      (and (= (.call js/toString node) (str "[object Number]"))
           (js/eval (str node " != +" node ))))
    

    【讨论】:

      【解决方案2】:

      可以使用isNaNjs函数:

      (js/isNaN ..)

      【讨论】:

      • 注意:js/isNaN 在 IE11 中不存在。
      【解决方案3】:

      您不应该比较 NaN - 它们总是不相等的。您应该能够使用 javascript 的内置 isNaN 函数,如

      (js/isNaN x)
      

      【讨论】:

      • 请注意,js/isNaN 函数在 IE11 中不存在。我刚遇到这个问题!
      猜你喜欢
      • 1970-01-01
      • 2013-04-14
      • 2023-03-07
      • 2015-09-23
      • 2022-01-13
      • 1970-01-01
      • 2012-04-11
      • 2017-10-03
      • 2018-02-03
      相关资源
      最近更新 更多