这里说:
http://briancrescimanno.com/2009/09/24/how-self-executing-anonymous-functions-work/
看看jQuery的源代码,你会看到 整个库包含在一个单独的自执行功能中 分配给jQuery全局对象。
但是,由于jQuery是GLOBAL对象,它确实污染了全局命名空间,或者我错过了什么?
答案 0 :(得分:5)
您没有正确阅读该博文中的下一句话。它没有声称有没有污染:
这正是jQuery不会像其他库那样污染全局命名空间的原因。
答案 1 :(得分:4)
在全球范围内只有一(2)个变量不被视为全球范围的污染。它就像一个名称空间,其他库很可能不会调用它们的命名空间'jQuery'(更可能是$
)。甚至在那种情况下,jQuery通过实现noConflict
函数来优雅地处理它。
答案 2 :(得分:0)
考虑替代方案也是有益的:如果全局范围内没有对象,那么对象在哪里? Javascript中的所有内容都有一个范围,因此如果$不在全局命名空间中,或者在另一个javascript对象中,则它是未绑定且无法访问的。这种情况应该是不可能的。每个对象都必须某处。
如果javascript对象存在但没有作用域,它是否可用? 如果一棵树落在森林里,但周围没有人,它会发出声音吗?