在使用一些javascript时,我遇到了令我困惑的行为,我正在寻找一些解释正在发生的事情的文档。
问题似乎在于,根据函数的传递方式,当我认为它们只是参数时,它们可能会被执行。
这是一个简单的例子:
function f1()
{
alert('f1');
}
function f2()
{
alert('f2');
}
function f3(a, b)
{
alert('f3');
}
上述调用的两个版本:
f3(f1, f2); // shows 1 alert
f3(f1(), f2()); // shows 3 alerts
上面第一次调用 f3 会导致 f1 和 f2 函数没有被调用,并且您会收到一个“f3”的警报。f3 函数的第二次调用被调用,因此您会收到“f1”、“f2”和“f3”的三个警报。
在实际代码中,我将使用第一个版本,以便 f3 可以决定是否要调用 f1 和 f2。我花了一些时间才把它弄好。
我没想到会出现这种行为,并认为无论有没有括号,都不会仅仅通过将它们作为参数来调用 f1 和 f2。
同样,我正在寻找一些解释其工作原理的文档。