欢迎!请参阅关于页面以了解更多关于此工作方式的信息。
在 Clojure 中,关键词被显式地缓存和内部化,以便
(identical? :a :a)
是真实的。
但在 ClojureScript 中情况并非如此,上面的返回值是 false。
这是为什么?
它们在:advanced优化构建中,或者如果您在编译器选项中开启:optimize-contants true。
:advanced
:optimize-contants true
CLJS 增加了额外的keyword-identical?和symbol-identical?函数,这些函数可以解决这个差异。
keyword-identical?
symbol-identical?
没有在开发构建中完成的原因主要是 JavaScript 直到最近才有了弱引用,以及 Closure Compiler 如果所有关键词都存储在“全局”注册表中,无法恰当地优化它们。