【发布时间】:2012-05-21 07:24:00
【问题描述】:
我想将参数传递给使用setTimeout 调用的函数。我找到了这三个选项:
A = 1;
// Method 1: closure things
setTimeout(function() { whatsA(A); }, 100);
// Method 2: third argument (same result with [A])
setTimeout(whatsA, 100, A);
// Method 3: eval
setTimeout('whatsA(' + A + ')', 100);
A = 2;
function whatsA(X) { console.log(X); }
这在 Internet Explorer 9 中显示 2、undefined 和 1。
方法 1:显然,我不希望在传递参数后更改参数(当然在简单整数的情况下)。
方法 2:如果只有 Internet Explorer 支持就完美了。
方法3:这似乎是唯一的选择。但它似乎不如其他漂亮,传递的是要评估的东西而不是函数。
有没有更好的办法?
【问题讨论】:
-
方法 3 是您应该永远使用的方法。即使在壁虎浏览器中,方法 2 也已被弃用 - 所以即使不支持 IE,它也几乎是不行的。
标签: javascript closures scope settimeout