函数调用
2015-08-15 13:53
190 查看
之前写了一个关于input下拉框的选择的js,不是很明白下面这三者的区别。
1)函数a
2)函数b
3)函数c
现在查查资料总结他们之间区别。
函数a
函数a是最正常的一种函数调用,function 定义了一个函数a,然后当代码流流向a()时调用了函数a。
函数b
函数b其实一般用作私有作用域,私有作用域就是无论在什么地方,只要临时需要一些变量就可以使用私有作用域。js的私有作用域来自js没有块级作用域的概念。也就是函数声明一个变量,那么就会在整个函数内斗会被访问到,然而有时候我们值需要在函数的部分区域访问这个变量,或者我们接下来的函数体中需要定义一个一样的变量,但是使用的块不一样,那么久可以使用私有作用域。
eg:
本来最后一个alert(i)是不应该能访问到i,但是因为没有私有作用域的概念它访问到了,如果我们在接下里的函数体中继续使用i,那么函数就会出现错误。这时候我们使用私有作用域(块级作用域)。如下
eg:
这样接下来的函数就不能访问到i,可以再次定义i变量。
在全局作用域中调用
(function b(){})();
那么函数会被立马实现,并且作为私有作用域实现,不会影响到全局,也就不会搞乱全局作用域。
函数C
window.onload是当页面全部加载完成之后所做的事情。包括JS css 图片 html等所有的
有一个多次加载window.onload的函数:
使用这个函数,我们可以在函数的末尾添加多个需要在加载完成后执行的函数。
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(); } } }
使用这个函数,我们可以在函数的末尾添加多个需要在加载完成后执行的函数。
相关文章推荐
- 关于linux下svn日志问题
- 质数因子
- 设计模式的饕餮盛宴
- 深箸隋唐
- Java EE HTML5 WebSocket 示例
- C++基础---空类型
- CSS3伪类选择器:nth-child()
- mysql开发遇到的问题之1064错误代码
- 年会礼品
- Android textview 设置不同的字体大小和颜色
- Hadoop 原理总结
- test
- Spring MVC学习系列(1)之人生若只如初见
- 机器学习中的范数规则化之(一)L0、L1与L2范数 非常好,必看
- UVALive - 6322 The Swapping Game
- POJ2560 Freckles(prim最小生成树)
- FreeMarker入门教程
- 解决phpMyAdmin在nginx+php-fpm模式下无法使用的问题
- 解决phpMyAdmin在nginx+php-fpm模式下无法使用的问题
- 华为OJ平台试题 —— 字符串:字符串加解密