JavaScript基础(六) --- 函数、闭包
来源:互联网 发布:怎么看端口号是什么 编辑:程序博客网 时间:2024/06/07 23:03
1. 函数的参数
1). 形参 – 函数在定义阶段,里面的参数属于形参
2). 实参 – 函数的调用阶段,参数为实参
function fn(n){ // n - 形参 alert(n) }fn(10); // 10 - 实参
3). 当把函数表达式做为值传给另一个函数的参数的时候,就叫做回调函数
function fn(n){ n(); }function aa(){ alert(456) }fn(aa); // aa - 回调函数
4). 函数自带参数机制: arguments (arguments是一个类数组)
function add(){ var total=0; for(var i=0; i<arguments.length; i++){ if(!isNaN(arguments[i])){//过滤有效数字; total+=Number(arguments[i]);//防止字符串拼接 } } return total; } console.log(add(1,2,'3','3px','aaa',7));
2. 函数封装的意义
对于相同的功能;只需要封装1次,以后需要的时候,直接调用即可;
3. 函数的分类
4. 闭包
函数被调用的时候形成一个私有作用域,保护里面的变量不受外界的干扰,函数的这种保护机制,叫做闭包;
例一:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title></head><body><input type="button" value="按钮1"/><input type="button" value="按钮2"/><input type="button" value="按钮3"/><input type="button" value="按钮4"/><script> //循环绑定事件:点击每个按钮弹出对应的索引; //自定义属性循环绑定事件; var aBtn=document.getElementsByTagName('input'); for(var i=0; i<aBtn.length; i++){//闭包实现循环绑定事件 //每个正确的i值,都被保存在闭包中的私有变量index上; (function(index){//形参:index aBtn[index].onclick=function(){ alert(index); } })(i);//实参i; }</script></body></html>
例二:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> <style> *{ margin:0; padding:0; list-style: none; } li{ width: 450px; height: 200px; font-size: 50px; margin:10px; } li input{ width: 150px; float: left; height: 40px; } li input.on{ background: lightblue; } li div{ width: 100%; height: 100%; display: none; background: lightblue; } li div.show{ display: block; } </style></head><body><ul> <li> <input type="button" value="按钮1" class="on"/> <input type="button" value="按钮2"/> <input type="button" value="按钮3"/> <div class="show">内容1</div> <div>内容2</div> <div>内容3</div> </li> <li style="width: 300px"> <input type="button" value="按钮1" class="on"/> <input type="button" value="按钮2"/> <div class="show">内容1</div> <div>内容2</div> </li> <li> <input type="button" value="按钮1" class="on"/> <input type="button" value="按钮2"/> <input type="button" value="按钮3"/> <div class="show">内容1</div> <div>内容2</div> <div>内容3</div> </li> <li style="width: 600px"> <input type="button" value="按钮1" class="on"/> <input type="button" value="按钮2"/> <input type="button" value="按钮3"/> <input type="button" value="按钮4"/> <div class="show">内容1</div> <div>内容2</div> <div>内容3</div> <div>内容4</div> </li></ul><script> var aLi=document.getElementsByTagName('li'); for(var i=0; i<aLi.length; i++){ tab(aLi[i]); } function tab(oBox){ var aBtn=oBox.getElementsByTagName('input'); var aDiv=oBox.getElementsByTagName('div'); for(var i=0; i<aBtn.length; i++){ (function (index){//每一个形参都是私有变量; aBtn[index].onclick=function(){ for(var i=0; i<aBtn.length; i++){ aBtn[i].className=''; aDiv[i].className=''; } this.className='on'; aDiv[index].className='show'; } })(i) } }</script></body></html>
5. 自执行函数
特点:自己调用自己
(function (){ alert(123) })(); ~function(){ alert(456) }() +function(){ alert(789) }() -function(){ alert(147) }() !function(){ alert(258) }()
阅读全文
0 0
- JavaScript基础(六) --- 函数、闭包
- javascript基础之六(函数的闭包)
- JavaScript 基础: 匿名函数 闭包
- 《JavaScript高级程序设计 第三版》学习笔记 (六) 函数与闭包详解
- 《JavaScript高级程序设计 第三版》学习笔记 (六) 函数与闭包详解
- 《JavaScript高级程序设计 第三版》学习笔记 (六) 函数与闭包详解
- Javascript基础_10立即执行函数,闭包函数理解
- JavaScript语言基础---(六)匿名函数
- JavaScript基础——函数表达式、闭包
- 函数闭包--JavaScript权威指南--基础篇4
- javascript原型和闭包之---Function(六)
- javascript 闭包 -- 函数
- Javascript函数闭包
- javascript函数闭包
- javascript【函数】闭包
- javascript面向对象技术基础(六)(作用域、闭包、模拟私有属性)
- JavaScript基础(2):什么是“闭包”?
- JavaScript 基础(007_闭包)
- 单引号,双引号,javascript,HTML,转义字符
- BPM与ERP,OA
- 冒泡和选择排序
- Linux/Unix环境下的make和makefile详解
- widget的加载过程
- JavaScript基础(六) --- 函数、闭包
- Ubuntu1404下atom配置C++环境
- 图论500题——HDU_P1272(小希的迷宫)
- Jquery -- 错误集
- 阿里云申请配置免费DVSSL证书
- Android字符串进阶之三:字体属性及测量(FontMetrics)
- Maven
- ACdream 1103 瑶瑶正式成为CEO (树链剖分+最小费用最大流)
- Android----------RecyclerView数据展示