setTimeout 变量中的函数被覆盖

Function within setTimeout variable being overwritten

我有一个循环内的函数。我有一个围绕此函数的 setTimeout 函数。我的问题是,由于 setTimeout(这需要保留),正在设置的变量随后被覆盖。有解决此问题的简单方法吗?

演示版http://jsfiddle.net/L29yk2o6/

$("ul li").each(function(i, el) {
    $this = $(this);
    setTimeout(function () {
        myFunct($this);
    }, i*100);
});

function myFunct (item)
{
    var myText = item.text();
    $('body').prepend('<p>'+myText+'</p>');
}

当您忘记使用 var 并创建一个全局变量时就会发生这种情况。

$this = $(this);

需要

var $this = $(this);