Functions - Argument Deconstruction

JavaScript ClojureScript
function tmp (point){
     var x=point.x;
     var y=point.y;
     log(x + y);
}

tmp({ "x" : 3, "y" : 9});












(defn tmp [[x y]] (log x y))

(tmp [3 3])


(defn tmp [:keys [x y]] (log x y))

(tmp {:x 3, :y 3})


(defn tmp [{ x :x, y :y}] (log x y))

(tmp {:x 3, :y 3})


(defn tmp  [{ x :x, y :y :or {x 3}}]
  (log x y))
  
(tmp {:z 4 :y 4})
Note: More deconstructions are available with defn, fn, let and bindings. more info