setInterval和setTimeout传参。
一。采用字符串形式:
1.变量不包含在字符串:
1 var alertStr = function (str){alert(str);}; 2 var str = '1'; 3 var time = setInterval("alertStr("+str+")",2000); 4 //alert '1'; 5 str = '2'; 6 //依然alert '1';
这种方法的不足在于参数不会随着str变量的改变而改变,假设我们把str的值动态地变为'2',接下来循环调用的函数依旧alert出str的初值'1';
2.变量包含在字符串中:
var alertStr = function (str){alert(str);}; var str = '1'; var time = setInterval("alertStr(str)",2000); //alert '1'; str = '2'; //alert '2'
这样的方法随着str的动态改变,每次都调用str的新值。
二。匿名函数包装:
1 var alertStr = function (str){alert(str);}; 2 var str = '1'; 3 var time = setInterval(function(){alertStr(str)},2000); 4 //alert '1'; 5 str = '2'; 6 //alert '2'
和第二种方法一样。匿名函数包装会实时调用str变量的值。