首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

javascript的闭包有关问题

2012-10-19 
javascript的闭包问题先由一个例子来引出问题function f(){var avar i0 a(function(i){ return functi

javascript的闭包问题
先由一个例子来引出问题

function f(){var a;var i=0; a=(function(i){ return function(){ return i;}})(i)i=2; return a;}var a=f();alert(a());
function f(){var a;var i=0; a=function(){ return i;}i=1; return a;}var a=f();alert(a());


上面列举的两个例子只有一点的不同,导致了结果的迥异。其实例一其实使用了闭包,而例二没有使用。。。最后导致给a赋得值不同,例一赋得是变量i的值,而例二赋得是变量i的指针。。。。古当i值变时,例二的结果变了a=(function(i){ return function(){ return i;} })(i)
可以写成
function makeShow(x){     return function(){           return x;}  }a=makeShow(i);

热点排行