关闭

javascirpt匿名自执行函数

标签: functionjqueryjava
344人阅读 评论(0) 收藏 举报
分类:

原文出处:http://ce.sysu.edu.cn/hope2008/worklist/ShowArticle.asp?ArticleID=9278

一直没完全看懂jquery.js的代码结构,现在了解了。自执行函数,原来还有这么个东西,js果然博大精深啊!

-------------仍然是分割线--------------------------------------------------------------------------------------------------------

 看很多的网站的js文件,要面对的第一函数通常是匿名自执行函数,形如(function(){})(),它的作用有两个,一是匿名,在java中有匿名内部类,作用类似。匿名的意思是没有声名函数的名字,这样就使得函数外部无法访问匿名自执行函数的内部,防止函数之间变量命名的相互干扰,比如说有两个人写了两个js,放在同个网页中,如果它们没有用匿名函数包裹,这两个js文件之间的函数会互相调用,导致错误的产生。

       那么如何访问匿名函数里面的函数呢?通常是在里面的函数或变量前加上window,这样该函数或变量就成为全局的了,在同个页面,即使是不同我js文件,也可以访问到,所以只要某个页面中加入jquery.js,那么其它js文件就可以用jquery(*)来访问jquery.js中的函数。

       匿名自执行函数的另外一个作用是自执行,其实只要在js文件中写在任何代码,只要不包括function类型,它都会执行,它的作用有点像onload,不过onload是在页面载入完后才执行,它不用,所以如果它要调用某个页面元素,一定要将这个页面元素放在匿名自执行函数之前,否则会产生错误。

       在jquery中,匿名自执行函数嵌套了匿名自执行函数,形如:

(function(){
    var a=function(){};
    (function(){
    a()
    })();
})();

这样写的目前是实现自调用,匿名自执行函数里的匿名自执行函数可以调用上级的函数。这也有点像java,类内的变量和方法对内部类是透明的。所以a=function中a之前不用加window。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6698次
    • 积分:99
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:7篇
    • 译文:1篇
    • 评论:0条
    文章分类