如何将父函数嵌套的childexo()执行结果传递给外部newFunc()
解决方法
首先明确两个核心问题:
- 你的
childexo()目前只在内部打印内容,没有返回值,外部拿不到它的执行结果 - 你需要先执行
childexo(),把它的执行结果传给newFunc(),而不是传函数本身
下面是修正后的简单代码:
function exo(){ // 保留你的其他计算逻辑 return function childexo() { const Itext = "Phew, you just killed your bug"; console.log(Itext); // 保留内部打印 return Itext; // 关键:把要传递的内容返回出去 } } // 1. 调用exo()拿到childexo函数 const childFunc = exo(); // 2. 执行childexo函数,拿到它的执行结果 const childResult = childFunc(); function newFunc(result) { // 保留你的其他计算逻辑 function xImagine() { console.log(result); // 打印childexo的执行结果 } xImagine(); // 必须执行这个内部函数才能看到输出 } // 3. 把childexo的执行结果传给newFunc newFunc(childResult);
关键修改点说明
- 给
childexo()添加return Itext;:执行函数时会把字符串返回给调用者,外部才能拿到这个结果 - 用
const childFunc = exo();接收返回的childexo函数,避免全局变量污染(比直接赋值全局childexo更规范) - 执行
childFunc()得到结果后,再把结果传给newFunc(),而非传函数本身 - 在
newFunc()里执行xImagine(),否则这个内部函数不会自动运行,看不到输出
如果想更简化,也可以直接链式调用(适合新手快速理解):
function exo(){ return function childexo() { const Itext = "Phew, you just killed your bug"; console.log(Itext); return Itext; } } // 直接链式调用拿到结果 const childResult = exo()(); function newFunc(result) { console.log(result); } newFunc(childResult);
内容的提问来源于stack exchange,提问作者Victory Osiobe
相关产品推荐
相关产品推荐

