欢迎!有关如何使用本站的一些更多信息,请参阅关于页面。
在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无法如果所有关键字都存储在“全局”注册表中,则不能正确优化它们。