Clojure China

这个怎么理解:(-> % .-target .-value)

#1

是在HTML INPUT element 里用到的:

:on-change #(reset! username (-> % .-target .-value))
#2

可以参考 -> 文档

(-> % .-target .-value) 相当于 (.-value (.-target %))

(.-name o) 是 JavaScript 互操作 (JavaScript Interop) 的一种方式,用于得到 oname 属性。可以参考 clojurescript.io 页面右下角的示例。

所以,(-> % .-target .-value) 就是取 参数 (% 是匿名函数的第一个参数) 的target 属性,然后取结果的 value 属性。相当于 JavaScript 中的 arg.target.value (假设参数名是 arg)。

#3

谢谢,解释的很清楚。