# var
### 명명된 var 생성하기
- [[defn]] : var에 함수 할당
- [[defmacro]] : var에 매크로 할당
- [[defonce]] : 바인딩되지 않은 var에 값을 할당
- [[defmulti]] : var에 멀티메서드 할당
명명된 var는 다른 참조 타입들과는 달리 그 이름으로 평가하면 자동적으로 역참조가 수행되어 `#'`가 앞에 붙게 된다
`@`나 [[deref]]를 직접 호출하지 않아도 된다
(def favorite-color :green)
#'user/favorite-color
favorite-color
;=> :green
그래서 값이 아닌 바인딩된 var를 참조하려면 `#'` 또는 동일한 의미의 특수 구문 var를 사용해야 한다
(var favorite-color)
;=> #'user/favorite-color
### var 상태
^ 초기화 방법 ^ (resolve 'x) ^ (bound? #'x) ^ (thread-bound? #'x) ^
| (def x) | #'user/x | false | false |
| (def x 5) | #'user/x | true | false |
| (binding [x 7] ...) | #'user/x | true | true |
| (with-local-vars [x 9] ...) | nil | true | true |