这是因为{{cljs.repl}}处理来自JS环境的返回值的字符串表示时,先读后打印。从版本2371开始,相关的代码片段在此
https://github.com/clojure/clojurescript/blob/r2371/src/clj/cljs/repl.clj#L156
演示此现象的代码段更多
ClojureScript:cljs.user> (array-map 1 2 3 4 5 6 7 8 9 10 11 12 13 14) {1 2, 3 4, 5 6, 7 8, 9 10, 11 12, 13 14} ClojureScript:cljs.user> (array-map 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18) {7 8, 1 2, 15 16, 13 14, 17 18, 3 4, 11 12, 9 10, 5 6} ClojureScript:cljs.user> (seq (array-map 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18)) ([1 2] [3 4] [5 6] [7 8] [9 10] [11 12] [13 14] [15 16] [17 18]) ClojureScript:cljs.user> (hash-map 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18) {7 8, 1 2, 15 16, 13 14, 17 18, 3 4, 11 12, 9 10, 5 6}
这个问题可能是描述在(link: http://stackoverflow.com/questions/26349324/clojurescript-array-map-order 文本:这个问题)中描述的问题的最可能原因。打印有序集合的“预期”方式将防止用户困惑。