PHP菜鸟学习历程-6

【闭包案例】

1 闭包创建数组

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4       <meta charset="UTF-8">
 5       <title>17-闭包-数组</title>
 6       <script type="text/javascript">
 7         var num=new Array();
 8
 9         for(var i=0; i<=5; i++){
10             num[i]=function(){
11                   console.log(i);
12             }
13         }
14         i=100;
15         //以上代码从环境上看连个环境,window和function内部环境
16         //function内部环境访问外部变量信息(实际6个元素访问了6次)
17         //window环境的i变量只有一个,并且for循环执行完毕值为6
18         //因此每个数字元素访问到的结果都是6
19         //console.log(i);  6
20         /*
21         num[0]=function(){console.log(0)}
22         num[1]=function(){console.log(1)}
23         num[2]=function(){console.log(2)}
24         ......
25         num[5]=function(){console.log(5)}
26         */
27
28         num[4]();  //[6]  4
29         num[1]();  //[6]  1
30         num[3]();  //[6]  3
31         num[5]();
32
33         //num[6]();
34         //num[10]();
35       </script>
36 </head>
37 <body>
38
39 </body>
40 </html>

17-闭包-数组

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4       <meta charset="UTF-8">
 5       <title>18-闭包-数组</title>
 6       <script type="text/javascript">
 7         //闭包-制作数组
 8         var num=new Array();
 9         //当for循环执行第一次的时候
10         for(var i=0; i<=5; i++){
11             num[i]=f1(i); //把闭包传递给当前元素
12         }
13         /*
14          通过f1()函数调用,给每个num元素传递一个闭包,这样大家访问的信息都
15          是各自闭包的信息,每个闭包在内存中都单独存在,没有交集的地方
16         */
17         function f1(n){
18             //n=0传递给f2进行输出
19             function f2(){
20                 console.log(n);
21             }
22             return f2;
23         }
24         num[3](); //3
25         num[0](); //0
26         num[1](); //1
27         num[2](); //2
28         num[4](); //4
29         num[5](); //5
30         //num[6](); //is not function
31         /*
32         num[0]=function(){console.log(0)}
33         num[1]=function(){console.log(1)}
34         num[2]=function(){console.log(2)}
35         ......
36         num[5]=function(){console.log(5)}
37         */
38
39       </script>
40 </head>
41 <body>
42
43 </body>
44 </html>

18-闭包-数组

2 闭包当前行高亮显示

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>20-闭包-当前行高亮显示</title>
 6     <script type="text/javascript">
 7       window.onload = function(){
 8           //无序列表 高亮显示鼠标当前行
 9           lis = document.getElementsByTagName(‘li‘);
10           for(var i=0; i<=lis.length; i++){
11               //lis[i] 代表当前行的li元素节点
12               lis[i].onmouseover = over(i);
13
14               lis[i].onmouseout = out(i);
15           }
16       }
17       /*利用闭包,给每个li元素节点都生成独立的闭包函数调用,
18         内部的n参数也是独立存在的*/
19       function over(n){
20           function or(){
21               lis[n].style.backgroundColor = "gray";
22           }
23           return or;
24       }
25       function out(m){
26           function ot(){
27               lis[m].style.backgroundColor = "";
28           }
29           return ot;
30       }
31     </script>
32 </head>
33 <body>
34     <ul>
35         <li>关羽</li>
36         <li>张飞</li>
37         <li>黄忠</li>
38         <li>魏延</li>
39     </ul>
40 </body>
41 </html>

20-闭包-当前行高亮显

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>19-闭包-当前行高亮显示</title>
 6     <script type="text/javascript">
 7       window.onload=function(){
 8           //无序列表 高亮显示鼠标当前行
 9           var lis = document.getElementsByTagName(‘li‘);
10
11           //lis.length = 4;
12
13           for(var i=0; i<lis.length; i++){
14               //lis[i] 代表当前的li元素节点
15               lis[i].onmouseover = function(){
16                   //当前内部环境访问外部环境的变量i
17                   //实际外部环环境的变量i等于4
18                   //console.log(i);
19                   lis[i].style.backgroundColor = "gray";
20               }
21
22               lis[i].onmouseout = function(){
23                   lis[i].style.backgroundColor = "";
24               }
25           }
26       }
27     </script>
28 </head>
29 <body>
30     <ul>
31         <li>关羽</li>
32         <li>张飞</li>
33         <li>黄忠</li>
34         <li>魏延</li>
35     </ul>
36 </body>
37 </html>

19-闭包-当前行高亮显示

时间: 2024-07-31 04:24:33

PHP菜鸟学习历程-6的相关文章

PHP菜鸟学习历程-8

2 构造函数和普通函数的区别 两者本身没有实质区别,具体看使用 new  函数();   -------->构造函数 函数();        ---------> 普通函数 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>26-构造函数和普通函数</title> 6 &l

PHP菜鸟学习历程-7

[面向(基于)对象] 1 创建对象 在php里边,需要先找到一个类别,在通过类创建具体对象 在javascript里边,可以直接创建具体对象,后期可以再给对象丰富许多属性或方法. 1. 字面量方式创建对象 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>21-创建对象</title>

PHP菜鸟学习历程-4

4 执行环境可以访问什么变量 具体可以访问变量类型:局部变量.参数.函数.外部环境变量 优先级:局部变量 > 函数 > 参数 > 外部环境变量 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>08-执行环境可以访问的变量信息</title> 6 7 <scrip

PHP菜鸟学习历程-3

JS-作用域链及作用 [作用域链] 1 什么事作用域链 一个变量,在当前环境可以使用,当前环境的内部环境也可以使用,内部的深层环境...也可以使用,变量在不同环境都可以使用的现象想成了一个链条,称为“作用域链” 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>02-作用域链定义</title

PHP菜鸟学习历程-11

[继承] 在php,一个类去继承另一个类,本类实例化出来的对象,既可以调用本身类的成员,也可以调用父类的成员. 在javascript继承主要通过原型实现,构造函数继承一个对象,构造函数的实例会拥有被继承对象的相关成员. 原型继承prototype 具体实现: 1单成员继承 “构造函数”通过原型的方式继承单一的成员. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset=&q

PHP菜鸟学习历程-1 JS高级-34-昨天内容回顾

JS高级-34-昨天内容回顾     时间:2015-5-11 1.DOM获取元素节点 document.getElenmentById(id 属性值)                                   具体元素节点对象 document.getElenmentsByTagName(tag 标签名称 div ul li)        数组列表 document.getElenmentsByName(Name 属性值)                       数组列表 2.

PHP菜鸟学习历程-2

1.dom操作,利用dom创建无序列表.并追加到body里边,里面要求至少有四个项目. 2.给每个无序列表设置事件(dom2级),鼠标移入.移除,让鼠标当前行高亮显示 node.style.backgroundColor="gray"; node.style.backgroundColor="";

大三仍是Linux系统小白的我给大家讲讲学习历程

我与Linux结缘是在大三的时候.我与Linux熟识是在偶然遇到<Linux就该这么学>的时候.因为我是电子信息工程专业,在高年级时开设了嵌入式课程,嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分.所有带有数字接口的设备,如录像机.车子等,都使用嵌入式系统,有些嵌入式系统还包含操作系统.嵌入式操作系统包括μC/OS-II.嵌入式Linux.VxWorks等,但大部分嵌入式操作系统是不开源且不能免费使用,只有Linux是基于GPL协议,所以它成为了嵌入式系统的绝对主流. 我们学校的嵌入

菜鸟学习Cocos2d-x 3.x——内存管理

菜鸟学习Cocos2d-x 3.x——内存管理 2014-12-10 分类:Cocos2d-x / 游戏开发 阅读(394) 评论(6) 亘古不变的东西 到现在,内存已经非常便宜,但是也不是可以无限大的让你去使用,特别是在移动端,那么点内存,那么多 APP要抢着用,搞不好,你占的内存太多了,系统直接干掉你的APP,所以说了,我们又要老生常谈了——内存管理.总结COM开发的时候,分析过COM的 内存管理模式:总结Lua的时候,也分析了Lua的内存回收机制:前几天,还专门写了C++中的智能指针在内存