函数调用

来源:互联网 发布:养生源码 编辑:程序博客网 时间:2024/06/06 13:11

之前写了一个关于input下拉框的选择的js,不是很明白下面这三者的区别。
1)函数a

        function a(){}        a();

2)函数b

     (function b(){})();

3)函数c

window.onload=function c(){}

现在查查资料总结他们之间区别。

函数a
函数a是最正常的一种函数调用,function 定义了一个函数a,然后当代码流流向a()时调用了函数a。

函数b
函数b其实一般用作私有作用域,私有作用域就是无论在什么地方,只要临时需要一些变量就可以使用私有作用域。js的私有作用域来自js没有块级作用域的概念。也就是函数声明一个变量,那么就会在整个函数内斗会被访问到,然而有时候我们值需要在函数的部分区域访问这个变量,或者我们接下来的函数体中需要定义一个一样的变量,但是使用的块不一样,那么久可以使用私有作用域。
eg:

        function b(){            for(var i=0;i<3;i++){                alert(i);            }//0,1,2            alert(i);// 3        }

本来最后一个alert(i)是不应该能访问到i,但是因为没有私有作用域的概念它访问到了,如果我们在接下里的函数体中继续使用i,那么函数就会出现错误。这时候我们使用私有作用域(块级作用域)。如下
eg:

        function b() {            (function () {                for (var i = 0; i < 3; i++) {                    alert(i);                }            })();            //0,1,2            alert(i);//导致错误        }

这样接下来的函数就不能访问到i,可以再次定义i变量。
在全局作用域中调用
(function b(){})();
那么函数会被立马实现,并且作为私有作用域实现,不会影响到全局,也就不会搞乱全局作用域。

函数C
window.onload是当页面全部加载完成之后所做的事情。包括JS css 图片 html等所有的
有一个多次加载window.onload的函数:

  function addLoadEvent(func){     var oldonload=window.onload;     if(typeof window.onload!="function"){         window.onload=func;      }     else{         window.onload=function(){              oldonload();              func();           }         }   }

使用这个函数,我们可以在函数的末尾添加多个需要在加载完成后执行的函数。

0 0
原创粉丝点击