function show(t){
  if(document.getElementById("tb").getAttribute("value"))
    document.getElementById("tb").setAttribute("value",
      document.getElementById("tb").getAttribute("value") + t);
  else
    document.getElementById("tb").setAttribute("value", t);
}
function bar(){
  //TODO
}
foo = "test1";
bar();
foo = "test2";
bar();

方式一:使用w3标准的javascript BOM传参。

setTimeout(show,100,foo);

运行结果:IE undefinedundefined,Webkit test1test2

方式二:闭包传参

setTimeout(function(){show(foo)},100);

运行结果:IE test2test2,Webkit test2test2

方式三:返回函数的传参函数调用,即非闭包内的闭包。

setTimeout(function(t){return function(){show(t)}}(foo),100);

运行结果:IE test1test2,Webkit test1test2