您的位置:首页 > 其它

函数调用

2015-08-15 13:53 190 查看
之前写了一个关于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();
}
}
}


使用这个函数,我们可以在函数的末尾添加多个需要在加载完成后执行的函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: