函数调用作为参数值

Function call as parameter value?

本文关键字:参数 函数调用      更新时间:2023-09-26
function fn1() {
   return "hello worl!";
}
function fn2(data) {
   console.log(data)
}
fn2(fn1())
// Calling fn2 function passing(same time calling) fn1 function as an argument.

这是正确的方法吗?还是有其他方法?请协助我。

我读过一些关于将函数值传递给不带括号的参数的文章。

(或(

我应该这样做吗?

var f = fn1()
fn2(f)

不能将函数调用作为参数值传递。您可以传递一个函数

fn2(fn1); // logs `function fn1() {…}`

函数调用的结果

fn2(fn1()); // logs `Hello worl!`

是否使用额外的变量来中间存储该结果值,当它只使用一次时并不重要。

我读过一些关于将函数值传递给不带括号的参数的文章。

是的,有时会发生这种情况,例如,当您将处理程序函数传递给addEventListener左右时。在那里,您不想调用函数,而是将函数作为值传递 - 这会产生重要的差异。

在您的情况下,当您想要将 hello worl! 字符串传递给日志记录函数时,这是不合适的。你想要调用fn1()函数。

这取决于。如果返回的值fn1()多次使用,那么调用它一次执行var f = fn1()并不是一个坏主意。例如,如果是长度或数组、距离等,您将多次使用。所以:

var f = fn1();
fn2(f);
fn3(f);
fn4(f);
...

但同样,性能可能非常轻微,除非fn1()计算量很大。虽然它只使用f一次,但不需要将其存储在变量中:

fn2(fn1());