我正在使用an example project,并在使用它并进入JavaScript代码时,我发现了这个功能:
(function ()
{
...
...
a lot of code
...
...
...
scrollToPage : function (page, time) {
time = time || 0;
if (page < 0)
page = 0;
else if (page > this.pages.length - 1)
page = this.pages.length - 1;
this.changeTarget(this.pages[page]);
this.scrollTo(-page * this.pageWidth, this.y, time);
}
...
...
})();
我想知道这是如何运作的。为了了解我为什么要使用它,它是因为我想使用此函数之外的scrollToPage
函数来导航按钮点击。我在JavaScript中的唯一体验是在Unity3D中,这与我现在尝试的任何网页脚本都非常不同。
所以这样:
(function ()
{
...
...
a lot of code
...
...
...
scrollToPage : function (page, time) {
time = time || 0;
if (page < 0)
page = 0;
else if (page > this.pages.length - 1)
page = this.pages.length - 1;
this.changeTarget(this.pages[page]);
this.scrollTo(-page * this.pageWidth, this.y, time);
}
...
...
})();
function myButtonFunction()
{
scrollToPage(1);
}
答案 0 :(得分:0)
编写它的方式,你定义一个匿名函数(注意它没有名称),你就是立即调用它。这用于需要在函数中编写代码块并立即调用它的情况。
更新:
在你的例子中,(function(){})()中的代码;当网站启动时,可能会被执行(你需要看到这块代码被放置在网站内的地方)。
实际上,它将一个函数“赋值”给一个对象的成员变量(我想这个代码是你未显示的代码部分中对象声明的一部分,例如var o = {....}
) - 想想它将函数设置为新对象的成员变量,以便使用它来调用“内部”函数。稍后,在我的按钮函数中,此变量可用于调用“内部”函数(在outter函数内部具有私有范围)。这用于为稍后在站点内使用按钮分配函数回调。
答案 1 :(得分:0)
现在你可以调用outerFunction(),但是innerFunction()的可见性仅限于outerFunction()的范围,这意味着它对outerFunction()是私有的。它基本上遵循与Javascript中的变量相同的原理