我发现一个结果是clojurescript,因为aset是链接的:
(def data (js-obj))
(-> data
(aset "a" "a")
(aset "b" "b"))
(aget data "a") ;=> "a"
(aget data "b") ;=> 'returns nothing'
,而
(-> 1 inc dec) ;=> returns 1, which is fine
答案 0 :(得分:6)
Ankur对于这种情况发生的原因是正确的;要“解决”它,你应该使用更具语义描述性的东西:
(doto data
(aset "a" "a")
(aset "b" "b"))
答案 1 :(得分:5)
aset
返回插入的元素而不是数组对象本身,因此在“b”的情况下,data
没有从之前的“a”调用到它的线程。