如何理解下面这段参数为函数的代码?

const insideFn = logger => logger("123")
insideFn(message => console.log(message))

为什么会输出“123”,如何理解insideFn这个高阶函数?

阅读 2.2k
3 个回答

把函数作为参数传递

function callbackFn(message) {
  console.log(message);
}

function insideFn(callback) {
  callback('123');
}

insideFn(callbackFn);

可以分解成这段容易理解的函数

const insideFn = logger => logger("123")
insideFn(message => console.log(message))

箭头函数如下写:

const insideFn = (logger) => {
    return logger("123");
};
insideFn((message)=>{
    return console.log(message);
});

再如下写:

const insideFn = function(logger) {
    return logger("123");
};
insideFn(function(message){
    return console.log(message);
});

△ 这样看,能看懂了吧

调用insideFn函数时,
1、 实参:一个匿名函数 function(message){ return console.log(message); } 它传进去的是一个堆内存地址,假设地址:AAAFFF000
2、形参logger接收到它了,指向地址:AAAFFF000
3、return logger('123')=>return AAAFFF000('123')
即:返回的结果是:调用AAAFFF000('123')函数的返回值

调用AAAFFF000('123') 时,会输出字符串123

函数作为参数传了进去,相当于这样

function insideFn(logger) {
    return logger('123')
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题