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