![]() |
#2
砖家的谎言2015-01-16 13:42
|

var timeCirculate;
var strCirculateMSG = "";
var blnCirculate = false;
function Fun(array,fun1,fun2){
var i=0,len = array.length; //这里要注意在执行过程中数组最好是不变的
var arr;// 用于判断是否中断递归操作
timeCirculate = setTimeout(function(){
arr = fun1( array[i] , i++ ); //循环体要做的操作
blnCirculate = arr[0];
strCirculateMSG = arr[1];
//alert(blnCirculate);
//alert(strCirculateMSG);
// 正常 循环体内
if(blnCirculate){
if( i < len ){
timeCirculate = setTimeout(arguments.callee(array,fun1,fun2),0);
}else{
fun2(); //循环结束之后要做的操作
}
// 异常,退出循环
}else{
fun2(); //循环结束之后要做的操作
}
},0);
}
function a(value,i){
if(value == 3){
return [false,"错啦"];
}
return [true,""];
}
function b(){
clearTimeout(timeCirculate); // 清除 setTimeout
}
var arr=new Array(1,2,3);
Fun(arr,a,b);
alert(blnCirculate);
alert(strCirculateMSG);
如果在 Fun方法内 alert 2个变量,就能得到需要的数据,可如果在 Fun外却总是初始定义的值,为什么 Fun 方法内无法修改 外部定义的 blnCirculate strCirculateMSG 2个 变量的值哪?要如何修改