ClojureScript函数始终执行
我正在学习ClojureScript,我有两个函数可以更改“根应用程序”div中的内容: 由于“root app”div存在于该页面中,因此在中一切正常,但在中,我收到错误消息: 因为在那个页面中没有这样的div。这一切都很奇怪,因为ClojureScript似乎发现:ClojureScript函数始终执行,clojure,clojurescript,luminus,Clojure,Clojurescript,Luminus,我正在学习ClojureScript,我有两个函数可以更改“根应用程序”div中的内容: 由于“root app”div存在于该页面中,因此在中一切正常,但在中,我收到错误消息: 因为在那个页面中没有这样的div。这一切都很奇怪,因为ClojureScript似乎发现: (if (clojure.string/includes? current_url "about") 如果未打印console.log,则实际上为false 我的问题是:为什么函数mount components运行并发送
(if (clojure.string/includes? current_url "about")
如果未打印console.log,则实际上为false
我的问题是:为什么函数mount components运行并发送错误消息,即使条件if为false?奇怪的是console.log:
(.log js/console (str "Whatever URL ->>>" js/window.location.href))
不运行,但安装组件功能运行。我想我不理解ClojureScript工作方式中的“顺序”。我不确定,但根据你的描述,我认为你所思考的逻辑和你实际测试的逻辑是不同的。if语句在URL中查找“about”一词。如果它在那里,那么它将打印控制台日志,即它将在那里等待。如果不存在,它将运行mount components函数,该函数将查找您所说的未包含在页面中的div ID,因此您将得到错误。mount组件是ELSE语句,因此在测试为false时执行 我不确定,但根据你的描述,我认为你所想的逻辑和你实际测试的逻辑不一样。if语句在URL中查找“about”一词。如果它在那里,那么它将打印控制台日志,即它将在那里等待。如果不存在,它将运行mount components函数,该函数将查找您所说的未包含在页面中的div ID,因此您将得到错误。mount组件是ELSE语句,因此在测试为false时执行 if表单的工作方式类似于
(if cond true branch false branch)
,因此执行(mount component)
,因为它位于false分支中。签出,它只有一个真正的分支。if表单的工作方式类似于(if cond true branch false branch)
,因此您的(挂载组件)
会被执行,因为它位于假分支中。签出,它只有一个真正的分支。显然content
为空。元素ID正确吗?这基本上是一个NPE。将let
替换为when let
,以便仅在找到元素时运行。请看,您(几乎)不应该在函数范围内使用def
,这是您在init中执行的操作代码>函数。def
在全局范围内创建一个var。用本地绑定代替let
。它也应该是“Willkommen zu meim ekelhaften Blog”。显然内容
为空。元素ID正确吗?这基本上是一个NPE。将let
替换为when let
,以便仅在找到元素时运行。请看,您(几乎)不应该在函数范围内使用def
,这是您在init中执行的操作代码>函数。def
在全局范围内创建一个var。用本地绑定代替let
。也可能是“Willkommen zu meim ekelhaften博客”,这就是答案。if语句每个分支只接受一个表达式,没有隐式的do
。如果你想有条件地做多项事情,那么你应该在时使用(有一个隐式的do
),或者将多个语句包装在do
中。这就是答案。if语句每个分支只接受一个表达式,没有隐式的do
。如果您希望有条件地执行多项任务,则应在
时使用(具有隐式的do
)或将多个语句包装在do
(.log js/console (str "Whatever URL ->>>" js/window.location.href))