我多次看到这种语法,但我找不到合适的谷歌方法,我希望我能在这里得到一些帮助:
<script>
(function(){
//code goes here
})();
</script>
为什么函数关键字包含在括号中?它做了什么以及这叫做什么?
答案 0 :(得分:5)
在js中,语法为:
function() { //code }
定义了一个匿名函数。您可以将其存储到变量中并调用它:
var a = function() { //code };
a();
或者如果您不想打扰它,可以一步完成。
(function() { //code })();
括号是必要的,因为:
function() { //code }();
语法不正确。
此语法在某些情况下非常有用,可帮助进行内存管理以及更改变量名称。例如,在javascript中,您有jQuery
个对象,但大多数人将其称为$
。但有时$
被用作其他变量而不是jQuery对象。要解决此问题,您可以将代码包装在:
(function($) { // code that uses $ })(jQuery);
这样你可以使用美元符号而不必担心它是否实际指向jQuery对象。
答案 1 :(得分:5)
它被称为即时调用的匿名函数。
// defining and calling a named function
function x() { /* do something */ }
x();
// defining an anonymous function (usually to assign it to a variable)
var x = function () { /* do something */ };
x();
// defining and calling an anonymous function in one step
(function () { /* do something */ })();
大多数情况下,最后一个模式用作创建闭包的一部分。
答案 2 :(得分:2)
你可以google(或搜索Stack Overflow)JavaScript anonymous function
或closure
一些链接:
答案 3 :(得分:1)
请参阅Bob Fincheimers的答案,解释其含义。
它用于包装程序员不希望从外部看到的一堆函数和变量 - 当你使用库时这很好,你不希望它们阻塞许多函数名内部的东西。