我有2个功能:
const fn1 = (1, 2) => {
//do something
}
const fn2 = ({param1, param2, param3}) => {
$(`#id_one`).text(param1);
$(`#id_two`).text(param2);
param3;
}
调用函数:
fn2({
param1: 'hello',
param2: 'world',
param3: fn1(1, 2)
});
当我调用上面的函数时, fn1()在fn2()之前被调用。为什么会这样呢?我需要先经过fn2(),然后再进行fn1()。
答案 0 :(得分:3)
()
会调用该功能。由于您想在完成f2
中的所有操作后调用该函数,因此请将()
放在fn2
中,而不要放在调用方中:
const fn2 = ({param1, param2, param3}) => {
$(`#id_one`).text(param1);
$(`#id_two`).text(param2);
param3();
}
fn2({
param1: 'hello',
param2: 'world',
param3: fn1
});
答案 1 :(得分:1)
您需要像这样将回调函数传递给fn2:
fn2({
param1: 'hello',
param2: 'world',
param3: fn1
});
并像这样从fn2调用fn1:
const fn2 = ({param1, param2, param3}) => {
$(`#id_one`).text(param1);
$(`#id_two`).text(param2);
param3();
}
无论何时使用括号,都会立即调用该函数。
您当前使用的是param3: fn1()
,意思是“ param3等于该函数的返回值”,即使函数未返回任何内容,它也会运行fn1()来获取返回值。