很可能是因为ClojureScript没有Var。def直接使用JS变量,因此没有Clojure中的Var,这意味着没有根值,没有线程本地变量,也没有未绑定的Var,这意味着我们不需要bound?函数。
因此,在ClojureScript中,你可以假设你的定义始终是已绑定的,如果没有指定值,默认为nil。
因此,以某种方式,尽管它并不完全相同,你仍然可以使用some?。
In ClojureScript
(def a)
(some? @#'a)
=> false
请注意,some?检查值,所以你需要解引用或者直接使用该值,比如
(some? a)
=> false
In Clojure
(def a)
(bound? #'a)
=> false
然而,请注意
(def a nil)
(some? a)
=> false
以及
(def a nil)
(bound? #'a)
=> true
这就是为什么它并不完全相同的原因。