The generated JS is invalid here, somewhat unexpectedly (I suppose parentheses are required):
(defun foo (obj) (create :abc (let ((x (gethash "blah" obj))) (if x 123 456))))
=>
function foo(obj) { var x; return { 'abc' : x = obj['blah'], x ? 123 : 456 }; };