很可能是由于ClojureScript没有Var。 def
直接使用JS变量,所以在Clojure中没有Var,也就没有根值、线程局部变量,也没有未绑定的Var,这意味着我们不需要bound?
函数。
因此,在ClojureScript中,您可以假设您的def始终是已绑定的,默认为nil,如果您没有指定值。
所以,从某种意义上说,尽管它并不完全相同,您可以使用some?
来代替。
ClojureScript
(def a)
(some? @#'a)
=> false
请注意,some?检查值,因此您需要解引用或直接使用值,如下所示
(some? a)
=> false
Clojure
(def a)
(bound? #'a)
=> false
但请注意
(def a nil)
(some? a)
=> false
以及
(def a nil)
(bound? #'a)
=> true
这就是为什么它们并不完全相同。