有两种方式:
一是定义一个变量接收子函数返回的值,再执行变量所在的函数,二是子函数直接在里面就调用。
还是拿案例一来说:
可以改成第一种方式。
function aa(){
var b=10;
return function cc(){
b++;
alert(b);
}
}
var dd=aa();
dd();
结果:11
第二种方式:
function aa(){
var b=10;
(function cc(){
b++;
alert(b);
})();
}
alert(aa());
弹出两个结果分别是:11,undefined
为什么第二个会弹出 undefined,因为:如果一个函数没有返回值,则会留下一个 undefined
注意如果内部函数在里面执行,那么前面就不要写 return,
如:return (
function cc()
{ b++; alert(b);
})();
此时return在里面没有意义,因为没有返回值 ,就不要写 return,就像java 不会写 return void一样。
一是定义一个变量接收子函数返回的值,再执行变量所在的函数,二是子函数直接在里面就调用。
还是拿案例一来说:
可以改成第一种方式。
function aa(){
var b=10;
return function cc(){
b++;
alert(b);
}
}
var dd=aa();
dd();
结果:11
第二种方式:
function aa(){
var b=10;
(function cc(){
b++;
alert(b);
})();
}
alert(aa());
弹出两个结果分别是:11,undefined
为什么第二个会弹出 undefined,因为:如果一个函数没有返回值,则会留下一个 undefined
注意如果内部函数在里面执行,那么前面就不要写 return,
如:return (
function cc()
{ b++; alert(b);
})();
此时return在里面没有意义,因为没有返回值 ,就不要写 return,就像java 不会写 return void一样。
函数运行就是个闭包,如果里面的子函数不在里面执行,就要加上return ,然后在父函数外面调用返回的子函数。
应用的实例:
window.οnlοad=function(){
varli=document.getElementsByTagName("li");
for(vari=0;i<li.length;i++){
li[i].οnclick=(function(n){
return function(){
alert(n);
}
})(i);
}
}
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>