!function ($) { }(window.jQuery) what is this code for?
Possible Duplicate:
What is the purpose of this? (function ($) { //function code here })(jQuery);
What does the exclamation mark do before the function?
negating self invoking function? !function ($) { … }(window.jQuery);
1 2 3 4 5 6 7
| !function ($) {
$(function() {
.
.
.
})
}(window.jQuery) |
我在一个jquery示例中看到了这个,并且想知道!function($){}(window.jQuery)的用途。 特别是感叹号对我来说是新的。
-
所以你在StackOverflow上找到了答案,并觉得有必要发布你在StackOverflow上找到答案的事实作为一个单独的问题和答案?
-
这不完全是重复的。这个结合了jQuery和!记到一个答案。另外并不是每个人都知道!function($){}()和(function($){})()基本上是做同样的事情。直到我输入感叹号才得到答案。有些人会尝试找到!功能,但这并没有给我带来任何结果。
-
@IHateLazy在好的方面,我去了一些代表原来的答案......
-
@Stofke:有许多不同问题的组合可以组合在一起形成一个"新"问题。这些已被多次询问和回答。他们是两个不同的问题,两者都已经覆盖,如你所示。所以是的,它是重复的。
-
我只想通过搜索实际代码来让人们更容易找到。到目前为止,试图帮助人们。我甚至添加了参考文献。
-
值得赞扬的是,您自己找到了答案。但这应该是一个已经找到答案的指标。我敢打赌,有数百个问题以各种形式询问这个函数语法。传递jQuery的事实没有区别。每当有人将不同的值传递给函数时,我们是否应该有一个新的问题?
-
不,但我找不到谷歌或这个网站的单一答案,直到我输入'感叹号'这个词,因为我正在搜索!功能。我只是想让人们免于沮丧。
-
在没有阅读的情况下报告重复内容并使用我自己提供的链接现在这是懒惰的。
-
如果你的意思是没有任何标题使用!,实际上就有这样的标题,但StackOverflow搜索对某些字符不起作用,所以在你的内容中包含!不会做太多更好。
-
你在叫我懒惰吗?正如我所说,可能有数百个问题涉及同样的事情。传递window.jQuery这一事实并不能使它成为一个独特的问题。它只是可以传递给函数的众多值中的一个。它是重复的,很多次,包括传递window.jQuery的那些。
-
好的,看到它是重复的,所以是这个:stackoverflow.com/questions/10896749/…然而,当它在6月发布时,没有人评论它,而其他例子更老。所以关闭问题只是随心所欲。没关系,我会从现在开始把事情留给自己,而不是分享和浪费我的时间。
-
是的,这也是重复的,应该这样关闭。但这就是区别。那个人不知道答案并询问了这个问题。你知道这是一个骗局,无论如何都发布了。这不是随意的,但它确实需要那些愿意花时间帮助维护网站以找到欺骗并关闭它的人。
-
你知道我是如何通过搜索!function($){}(window.jQuery)找到它的。它只是愚蠢的stackoverflow只搜索标签和标题,没有全文搜索。在我看来,这需要发布更容易找到的重复项。我理解你的观点,但它并没有帮助别人。我没有给出...关于重复,整个互联网充满了重复的信息,它是关于能够找到你需要的信息对我来说重要的能力。而stackoverflow虽然我喜欢它的存在并不能很好地完成那个imho。
-
很公平。是的,SO有其弱点。但是如果你决定发布欺骗行为,当人们打电话给你并关闭问题时,不要太惊讶。将答案放在答案中可能会保证它被关闭。
-
大家好,我相信这个讨论属于元。 重复是复杂的,我们没有很好的工具来找到最好的; 很难确定什么应该被认为是什么(时间不应该是第一个关注恕我直言)。 此外,欺骗在网站上有目的(并且由于某种原因不会被删除)。 相关必读:blog.stackoverflow.com/2010/11/…。
-
谢谢(你的)信息。 从现在开始我不会这样做,救我麻烦。 我安慰自己,以为有人会通过我的封闭副本找到答案并留在那里。
好的我在做了一些研究后想通了,但我会把答案留给其他人。
基本上它是为了避免与其他使用美元符号的JavaScript库发生冲突。
所以Jquery建议使用jQuery或window.jQuery而不是美元符号。它通常与jQuery.noConflict()结合使用,以使jQuery在混合库时放弃在其他javascript库中使用的$符号。
这实际上是一种运行自执行函数的方法,该函数传入window.jQuery对象并将其传递给$符号。这样,您可以继续在代码中使用美元符号,而不必担心可能导致与您的代码冲突的其他JavaScript库。
将它包装在此函数中可以避免在任何地方使用window.jQuery来替换$符号。
如果您execute function () {}()这样会导致语法错误,因为它只是一个函数声明。的!把它变成一个可以执行的表达式。
所以基本上你可以将两者用于同一目的。
1 2
| !function($){}()
(function($){})() |
随意修改或补充。
引用:
-
这样做的目的是什么? (function($){//这里的函数代码})(jQuery);
-
感叹号在功能之前做了什么?