当前位置:  开发笔记 > 编程语言 > 正文

这个javascript语法是什么意思?

如何解决《这个javascript语法是什么意思?》经验,为你挑选了1个好方法。

我正在尝试理解由Asp.Net Ajax Toolkit生成的脚本,该脚本目前正在提供"预期的对象"(如果我将PopupControlExtender放在更新面板中,则错误消失).

document.getElementById('ctl00_ValidationSummary1').dispose = function() {
    Array.remove(Page_ValidationSummaries, document.getElementById('ctl00_ValidationSummary1'));
}
(function() {var fn = function() {AjaxControlToolkit.ModalPopupBehavior.invokeViaServer('ctl00_c1_componentCategoryListUC_componentCategoryGrid_modalPopupExtender', true); Sys.Application.remove_load(fn);};Sys.Application.add_load(fn);})();

我在这里看到的是:

someobject.someevent = function() {
    dosth;
} /* Get ready, I am about to do sth crazy ... */
(function() { dosth; })(); /* you did what? */

这个语法是什么意思?

编辑:我特别好奇(function(){...})()在另一个函数结束后立即出现}.

编辑:原来,ajax家伙忘了在事件处理程序分配后放置分号.



1> Andrzej Doyl..:

(function() { dosth; })();

语法声明一个匿名函数,然后立即执行它.这相当于这样做:

 var myFun = (function() { dosth; });
 myFun();

但没有临时变量.

从广义上讲,这类似于执行任何事情dosth; 但是创建一个函数对象会为变量引入一个新的作用域(由于闭包),因此这通常用于解决与作用域有关的问题.

在你引用的具体案例中,我认为没有任何理由说明为什么这是特别必要的.然而,它可以这样做有两个原因 - 最终的Javascript本身是由一些自动过程生成的,无法判断是否需要闭包; 或者它是由一个人决定总是将功能包装在一起以保证安全.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有