12

値が であるかどうかを確認するにはどうすればよい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)))
4

3 に答える 3

2

を注意

(js/isNaN [1,2])

true を返します。js/isNaN が期待どおりに対応しないケースは他にもたくさんあります。

ブラウザーで underscore.js を使用している場合は、代わりに (.isNaN js/_ ..) に委譲できます。

それ以外の場合は、次の関数を使用する必要があります。

(defn isNaN [node]
  (and (= (.call js/toString node) (str "[object Number]"))
       (js/eval (str node " != +" node ))))
于 2013-08-24T15:11:15.493 に答える