块函数在javascript中作为参数传递时运行

时间:2016-02-21 15:06:31

标签: javascript

mkdir('../stuff/newfolder', 0777, true);

我想在点击时运行功能。 但是当页面加载时它会运行。

var event = function(id) {
    alert(id);
}

textProgressBar.generator('20', text1, event("test"));

this.generator = function (percentage, text, event, type) {
    ....
    $(this.id).children().last().on('click', event);
}

如果我将参数传递给textProgressBar.generator('20', text1, event("test")); 函数,则会在加载页面时运行。

如何在加载页面时阻止此功能?

1 个答案:

答案 0 :(得分:1)

这一行:

textProgressBar.generator('20', text1, event("test"));

调用 event并将其返回值传递到textProgressBar.generator,与foo(bar()) 调用 bar的方式完全相同将其返回值传递给foo

如果要将函数传递给generator,则需要传递函数引用而不是调用函数。

两种方法:

  1. 包装函数:

    textProgressBar.generator('20', text1, function() { event("test"); });
    

    在那里,我们创建了一个函数(一个匿名函数),当它被赋值时,会调用event作为参数传递"test"

  2. Function#bind

    textProgressBar.generator('20', text1, event.bind(null, "test"));
    

    Function#bind创建一个新函数,在调用时,将使用给定的this值(在我的示例中为null)调用原始函数,并为您提供任何参数bind (我的例子中"test")。