不确定这是否是错误还是预期行为,但这样做
(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;
});
并且局部{{location}}变量会遮蔽全局我在{{location.href}}中要访问的变量。
这类问题是预期之中的,在JS中应引起注意并尝试解决问题,但在CLJS中却非常令人困惑,因为没有暗示我在哪里做错了以及为什么代码会失败。我记得ClojureScript的一个目标就是修复JS语义,也许有办法解决这类问题?至少抛出一个警告也许?