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

Node.js导出模块时返回函数与返回对象字面量为何运行结果不同

问题原因分析

两种写法运行效果差异的核心是allaSeconda函数的返回值类型不同,和你在index.js中的调用逻辑不匹配导致的:

  • 第一种无法运行的场景
    你写的allaSeconda函数直接返回calcola函数本身,执行allaSeconda()后,导出对象的eleva属性就是calcola函数:
    // 此时eleva的值等价于这个函数
    function calcola(num){
        return num*num
    }
    
    你在index.js中调用eleva.calcola(9),相当于尝试从一个函数对象上读取不存在的calcola属性,拿到的是undefined,调用undefined()自然会抛出类型错误。
    如果要让第一种写法正常运行,只需要把index.js的调用逻辑改成直接调用eleva即可:
    const {eleva} = require('./modulo')
    console.log(eleva(9)) // 输出81
    
  • 第二种可以正常运行的场景
    你写的allaSeconda函数返回的是{calcola}对象,这个对象的calcola属性指向平方计算函数,执行allaSeconda()后,导出对象的eleva属性就是这个包含calcola方法的对象,和你在index.js中eleva.calcola(9)的调用逻辑完全匹配,所以可以正常执行得到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:27:02