- 变量
变量
在一个命名空间中定义变量可以这样写, 下面的代码可以在 Lumo 当中试验:
(def a 1); #'cljs.user/a
也有局部的绑定, 通过 let 来定义:
(let [x 1y 2](+ x y)); 3
数据绑定之后, 一不可以修改.
在 cljs 环境里用到可变状态, 需要通过 Atom 类型定义可变状态:
(def b (atom 1)); #'cljs.user/b
Atom 类型是一个引用, 每次读取最新的数据时需要通过 @b 语法来取最新的值, 或者 (deref b). 一般为了突出可变状态, 会使用 *b 这样的命名习惯. 这样定义和修改状态就是:
(def *b (atom 1)); #'cljs.user/b(reset! *b 2); 2
由于前端经常使用热替换机制, 所以专门的函数, 避免热替换后重新计算绑定.defonce 一般是和 Atom 类型配合使用:
(defonce *c (atom 1)); #'cljs.user/*c
