这是由于 ClojureScript 的 repl.clj 代码中的 {{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}
这个问题可能是描述在(链接:http://stackoverflow.com/questions/26349324/clojurescript-array-map-order 文本:这个StackOverflow问题)中描述的问题的最可能原因。打印有序集合的"预期"方式将有助于防止用户混淆。