不确定这是否是一个bug还是预期行为,但是这个
(defn test-fn []
(let [href js/location.href
location "123"]
href))
被编译成这样(不在高级模式下)
cognician.chat.ui.pages.insights.test_fn = (function cognician$chat$ui$pages$insights$test_fn(){
var href = location.href;
var location = "123";
return href;
});
和B{{location}}局部变量{{location.href}}正在尝试访问的全球变量{{location}}发生冲突。
这种事情是预期的,并且在JS中应该注意并解决类似问题,但在CLJS中非常令人困惑,因为没有提示我犯了什么错误以及为什么代码会失败。我记得ClojureScript的目标之一是修复JS语义,所以也许可以解决这个问题?至少抛出一个警告,可能吗?