2024 Clojure 状态调查 中分享您的想法!

欢迎!有关此功能的工作原理,请参阅关于页面了解更多信息。

+1
ClojureScript
再次标记
cljs.user=> (def a #js {})
#'cljs.user/a
cljs.user=> (set! a -x false)
WARNING: Use of undeclared Var cljs.user/-x at line 1 <cljs repl>
nil
cljs.user=> a
nil

根本原因是,从 cljs.analyzer 复制的以下代码没有区分 false/nil alt 和完全缺失的值。

(defmethod parse 'set!
  [_ env [_ target val alt :as form] _ _]
  (let [[target val] (if alt
                       ;; (set! o -prop val)
                       [`(. ~target ~val) alt]
                       [target val])]
    ...))

修复它的方法之一是显式检查 (count form) 的值。

1 答案

0

被选中
...