Clojure 中
user=> (conj {:a 1} '([:b 2] [:c 3]))
执行错误(ClassCastException)在用户/eval3 (REPL:1)。
clojure.lang.PersistentVector 不能转换为 java.util.Map$Entry
但在 ClojureScript 中
cljs.user=> (conj {:a 1} '([:b 2] [:c 3]))
{:a 1, :b 2, :c 3}
有一个检查以确保条目满足 {{vector?}},但我们也可以要求它们满足 {{map-entry?}}。事实上,当 {{vector?}} 不满足时给出的错误信息是:“在映射上 conj 需要的是 _map entries_ 或 _map entries_ 的可序列化对象”。
理由:即使此更改将拒绝一些程序,但这些程序是错误的(意外工作),并且,如果移植到 Clojure,将失败。此外,利用它们是映射条目的事实可以访问它们的键和值,这可以导致代码更快。 (参见 CLJS-3116 中的利用映射条目)