var rainman = (function( x , y ){ return x + y; })( 2 , 3 ); /** *也可以写成下面的形式,因为第一个括号只是帮助我们阅读,但是不推荐使用下面这种书写格式。 var rainman = function( x , y ){ return x + y; }( 2 , 3 ); */
在这里我们创建了一个变量rainman,并通过直接调用匿名函数初始化为5,这种小技巧有时十分实用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
示例五:
var outer = null; (function(){ var one = 1; functioninner (){ one += 1; alert( one ); } outer = inner; })(); outer(); //2 outer(); //3 outer(); //4
var lists = document.getElementsByTagName('li'); for(var i = 0 , len = lists.length ; i < len ; i++ ){ lists[ i ].onmouseover = function(){ alert( i ); }; }
var lists = document.getElementsByTagName('li'); for(var i = 0 , len = lists.length ; i < len ; i++ ){ (function( index ){ lists[ index ].onmouseover = function(){ alert( index ); }; })( i );//利用闭包的函数自调用的特性,当i的值传到匿名函数之后,匿名函数就可以自己调用,然后得出结果。 }
解决方法二: var lists = document.getElementsByTagName('li'); for(var i = 0 , len = lists.length ; i < len ; i++ ){ lists[ i ].$$index = i; //通过在Dom元素上绑定$$index属性记录下标 lists[ i ].onmouseover = function(){ alert( this.$$index ); }; }
解决方法三:
functioneventListener( list , index ){ list.onmouseover = function(){ alert(index); }; }
var lists = document.getElementsByTagName('li'); for(var i = 0 , len = lists.length ; i < len ; i++ ){ eventListener( lists[ i ] , i ); }