这是由于{{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 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> (array-map 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21) {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}
这个问题似乎是最可能导致描述在(链接:http://stackoverflow.com/questions/26349324/clojurescript-array-map-order 文本:这个StackOverflow问题)中描述的问题。最好以“预期”的方式打印有序集合,以防止用户困惑。