You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不修改定义的前提下让JS代码输出SUCCESS CALLED?

如何在不修改test定义的前提下调用左侧success函数?

先看原代码:

const test = (
    (success) => {
        console.log('SUCCESS CALLED');
    },
    (error) => { 
        console.log('ERROR CALLED');
    }
);

test(); // 输出 **ERROR CALLED**

由于逗号表达式的特性,test最终指向右侧的error函数,调用test()会输出ERROR CALLED。现在要问:能不能在不修改test定义的前提下,调用左侧的success函数输出SUCCESS CALLED?


答案是做不到。

原因很简单:逗号表达式只会保留最后一个表达式的结果,左侧的success函数在求值后没有被任何变量或引用持有,执行完赋值语句后,这个函数就成了无引用的垃圾对象,会被JS引擎的垃圾回收机制清理掉,后续没有任何办法再访问到它。

除非在success函数被求值的时候(也就是赋值语句执行的瞬间),函数内部主动把自身挂载到某个全局可访问的对象上,但这里的success函数只是被定义了,并没有被调用过,所以根本没有机会执行内部代码来保存自己。

所以在现有代码的前提下,没有办法调用到这个success函数。


内容的提问来源于stack exchange,提问作者Jaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 14:12:10