javascript将函数分配给变量而不运行它

时间:2016-03-15 13:30:59

标签: javascript

我已经定义了一个全局变量ff,然后调用f1为它分配函数f3。 当我调用f2时,f3将会运行。

var ff;
function f1() { ff=f3; }
function f2() { ff(); }
function f3() { alert("hello"); }

但如果f3采用如下参数

function f3(txt) { alert(txt); }

我调用f1将ff指定为以下

function f1() { ff=f3("hello"); }

f3将同时运行。

当我将f3分配给ff并且需要传递参数时,我不希望f3运行。 我怎样才能做到这一点? 在它之后带有()的变量就好像会使它成为一个函数并让它运行。

3 个答案:

答案 0 :(得分:6)

尝试使用bind

ff = f3.bind(null, "hello")
  

bind()方法创建一个新函数,当被调用时,它具有它   此关键字设置为提供的值,具有给定的序列   调用新函数时提供的任何参数。

答案 1 :(得分:1)

您在第二个示例中为ff调用的值分配f3,这就是它调用您的函数的原因。您应该像最初一样进行作业ff=f3。然后,您可以使用参数ff("hello")

调用ff

答案 2 :(得分:0)

这个怎么样?

var ff;
function f1() { ff=f3; }
function f2() { ff('hello'); }
function f3(text) { alert(text); }