To clarify on David's comment, js/console puts a literal 'console'
identifier into the generated js.

In your example, js/console is shadowed, because (defn console[] js/console)
is emitted as ns.console = (function console(){return console;});

The discussion to be had here is whether the (internal) name of the
generated js function should e.g. be mangled like let-binding:

ns.console = (function console_1337(){return console;});

Ticket?


2014-08-01 15:07 GMT+02:00 David Nolen <dnolen.li...@gmail.com>:

> js/foo does not resolve to the global namespace.
>
> David
>
> On Thu, Jul 31, 2014 at 9:42 AM, Sam Ritchie <sritchi...@gmail.com> wrote:
> > Hey guys,
> >
> > I ran into this last night when trying to port some ancient JS in our
> > project over to cljs. I was defining an om component called
> > "users-typeahead", and in the (did-mount ...) implementation calling a
> bare
> > javascript function called js/users_typeahead. At the repl, the latter
> > worked great; INSIDE the did-mount implementation, js/users_typeahead
> > resolved to a reference to the enclosing function itself.
> >
> > My expectation was that, with Clojurescript's namespacing, js/func_name
> > would always resolve to the top-level global namespace. Instead,
> >
> > Here's a minimal reproduction:
> >
> > (.log js/console "Hi!")
> > ;; logs "Hi!"
> >
> > (defn console [s] (.log js/console s))
> >
> > (console "Hi!")
> > ;; throws Compilation error: TypeError: undefined is not a function
> >
> > What do you think? Expected behavior, or just an edge case to avoid?
> >
> > --
> > Sam Ritchie (@sritchie)
> > Paddleguru Co-Founder
> > 703.863.8561
> > www.paddleguru.com
> > Twitter // Facebook
> >
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Clojure" group.
> > To post to this group, send email to clojure@googlegroups.com
> > Note that posts from new members are moderated - please be patient with
> your
> > first post.
> > To unsubscribe from this group, send email to
> > clojure+unsubscr...@googlegroups.com
> > For more options, visit this group at
> > http://groups.google.com/group/clojure?hl=en
> > ---
> > You received this message because you are subscribed to the Google Groups
> > "Clojure" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to clojure+unsubscr...@googlegroups.com.
> > For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to