评论者:thheller
抱歉重新打开。
我在对我的代码进行一些分析时注意到了关于cljs.core/str的警告。
Chrome报错:“未优化。值上下文对参数的值无效”,进一步查看goog.string.buildString的实现
goog.string.buildString = function(var_args) { return Array.prototype.join.call(arguments, ''); };
由于我们从未用多于一个参数调用它,这可能不是最好的实现选择。
也许可以跳过调用并内联,类似于
`
(defn str
"如果没有参数,则返回空字符串。如果有参数 x,则返回
x.toString(). (str nil) 返回空字符串。如果有多个参数,则返回参数的 str 值连接。"
的连接。"
([] "")
([x] (if (nil? x)
""
(.join #js [x] "")))
([x & ys]
(loop [sb (StringBuffer. (str x)) more ys]
(if more
(recur (. sb (append (str (first more)))) (next more))
(.toString sb)))))
`
我没有完全理解这个问题,但为什么我们不使用 .toString?使用 buildString/array 方法看似有点歪曲?
我不是很确定整体影响,但鉴于 cljs.core/str 在我的配置文件中展示得相当高,我认为应该进一步调查。