javascript 我们能在里面调用函数的参数吗?

2nbm6dog  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(133)

我开始在JS中学习promise,有(resolve, reject)传递给promise,在函数中做了一些动作之后,如果一切正常就调用resolve(),如果不正常就调用reject(),所以我才问这个。
我们真的能在里面调用一个函数的参数吗?实际上,如果我在VS代码中把()放在一个函数的参数后面,它会被突出显示为一个函数。
抱歉,如果解释有问题的话。我不是以英语为母语的人...
有这样一个例子:(stack()实际上是什么?)

const iGotIt = true;

const f = (stack, overflow) => {
    if (iGotIt) {
        stack({
            newKnowledge: 'Finally',
            message: ':)'
        })
    }
}
oxiaedzo

oxiaedzo1#

它取决于函数参数,因为它可能不是函数。
例如:

myFunction(data, callback){
  const result = do_something_with_data();
  callback(result);
}

myFunction(0, result => {
  do_something_with_result();
}); //works

myFunction(1, console.log); //works

myFunction(2, 0); //doesn't work, 0 is not a function.
mf98qq94

mf98qq942#

stack()到底是什么?
它是f函数中的第一个参数。
f函数 * 期望 * 第一个参数本身也是一个函数,并且至少接受一个对象参数。
但是stack * 实际上是什么 * 取决于传递给f的是什么。
例如,考虑以下用法,其中 a function 作为第一个参数传递:

const iGotIt = true;

const f = (stack, overflow) => {
    if (iGotIt) {
        stack({
            newKnowledge: 'Finally',
            message: ':)'
        })
    }
}

f(x => console.log(x));

然后调用stack()调用所提供的函数。或者,考虑以下示例:

const iGotIt = true;

const f = (stack, overflow) => {
    if (iGotIt) {
        stack({
            newKnowledge: 'Finally',
            message: ':)'
        })
    }
}

f();

此操作失败,因为未提供任何内容,因此stackundefined。或以下示例:

const iGotIt = true;

const f = (stack, overflow) => {
    if (iGotIt) {
        stack({
            newKnowledge: 'Finally',
            message: ':)'
        })
    }
}

f('test');

这也会失败,因为字符串不是函数,不能像函数一样调用。

相关问题