作为参数传递时如何评估函数

Posted

技术标签:

【中文标题】作为参数传递时如何评估函数【英文标题】:How Are Functions Evaluated When Passed As Arguments 【发布时间】:2016-04-26 14:50:06 【问题描述】:

javascript 中,函数是“一等公民”。但是,当它们作为参数传递给函数时如何评估它们,我有点困惑。

const childFunction = () => (
...
);

const parentFunction = ( childFunction ) =>(
...
);

我想知道代码流的顺序是什么。那么它会是这样的吗:

'parentFunction' 被执行。参数“childFunction”被识别为参数,“childFunction”被执行。一旦从 'childFunction' 收到结果,然后执行 'parentFunction' 的主体?

谢谢,

【问题讨论】:

childFunction 只有在parentFunction 执行时才会执行。它不会被隐式执行。 @squint 谢谢你,这很有道理。 【参考方案1】:

childFunction 不会通过仅作为参数传递来执行。采用childFunction 的函数必须使用childFunction()childFunction.apply/call 调用它

const childFunction = () => (
...
);

const parentFunction = ( childFunction ) =>(
   // childFunction doesn't get called/executed until this line is reached
   childFunction();
   // Or something like
   childFunction.call(this, 1,2,3);
...
);

【讨论】:

以上是关于作为参数传递时如何评估函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将变量传递给已经在 R 的参数中实现非标准评估的函数?

如何在另一个函数中传递/评估函数参数以用于 ggplot?

如何将函数作为参数传递,带参数? [复制]

调用微风函数时如何将数据绑定值作为参数传递

c# 请问数组能作为参数传递吗? 如果可以如何传递呢?

如何在类中将函数作为参数传递?