我正在学习 ClojureScript,我有两个函数可以更改“root-app”div 中的内容:
(ns blog.core)
(defn mount-components []
(let [content (js/document.getElementById "root-app")]
(while (.hasChildNodes content)
(.removeChild content (.-lastChild content)))
(.appendChild content (js/document.createTextNode "Wilkommen zu mein
ekelhaft blog!!"))))
(defn init! []
(def current_url js/window.location.href)
(if (clojure.string/includes? current_url "about")
(.log js/console (str "Whatever URL ->>>" js/window.location.href))
(mount-components)))
在http://localhost:3000/about中一切正常,因为该页面中存在“root-app” div,但在http://localhost:3000/blog中,我收到错误消息:
因为该页面中没有这样的 div。这一切都很奇怪,因为看起来 ClojureScript 实际上发现:
(if (clojure.string/includes? current_url "about")
实际上是 false en console.log 没有打印。
我的问题是:为什么即使条件if为假,函数mount-components也会运行并发送错误消息?奇怪的是console.log:
(.log js/console (str "Whatever URL ->>>" js/window.location.href))
不运行,但mount-components功能可以。我想我不理解 ClojureScript 工作方式的“序列”。