如何在其匿名函数中调用其中的函数

时间:2015-05-29 08:03:36

标签: javascript

var scaleJssor = new Array();
for(myloop=0; myloop<jssor_slider.length; myloop++)
{
  scaleJssor.push(
        function() { 
             var parentWidth = jssor_slider[myloop].$Elmt.parentNode.clientWidth;

             if (parentWidth)
                {
                    //alert("executing ScaleSlider");
                    jssor_slider[myloop].$SetScaleWidth(Math.max(Math.min(parentWidth-100, 960), 230));
                }
             else
                    window.setTimeout(<here I want to pass this function>, 30);

                });

}

以上只是一个代码片段,我只想知道如何在函数匿名的setTimeout()函数中传递函数,我知道如果我给函数命名,我可以轻松传递它,但我希望通过不给任何名称起作用。

3 个答案:

答案 0 :(得分:1)

你可以使用下一个

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !\.(?:jpe?g|gif|bmp|png|tiff|css|js)$ [NC]
RewriteRule !^maintenance\.html$ maintenance.html [R=307,L,NC]

这适用于下一个案例

someCode(function funcName() {
  // here you can access to function with funcName

});

在此处查看http://jsbin.com/rakupayaxo/1/edit?js,output

答案 1 :(得分:1)

虽然这不是一个足够好的代码,因为你在循环中反复定义相同的功能。您应该在循环外定义函数。我只是回答你关于setTimeout()函数的问题。 如果将参数传递给函数,以下内容可能会很有用。

function ScaleJssor(k) { 
             var parentWidth = jssor_slider[k].$Elmt.parentNode.clientWidth;

             if (parentWidth)
                {
                    //alert("executing ScaleSlider");
                    jssor_slider[k].$SetScaleWidth(Math.max(Math.min(parentWidth-100, 960), 230));
                }
             else
                    window.setTimeout(function(){ScaleJssor(k)}, 30);

                }

我认为如果您在示例中使用上述代码,则无论如何都不需要使用循环。

答案 2 :(得分:0)

在setTimeout。check this

内调用函数
setTimeout(function(){ alert("Hello");    }, 3000);

否则

var myVar;

function myFunction() {
   myVar = setTimeout(alertFunc, 3000);
}

function alertFunc() {
   alert("Hello!");
}