作为参数传递时如何评估函数
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);
...
);
【讨论】:
以上是关于作为参数传递时如何评估函数的主要内容,如果未能解决你的问题,请参考以下文章