首页 > 解决方案 > 如何通过导出导出相同的函数但具有不同的参数

问题描述

我需要导出相同的预定义函数,但通过导出具有不同的参数。

我想要达到的目标:

module.exports = {
    adminSaysHello: sayText("Hello", "admin"),
    adminSaysText: sayText(text, "admin"),
    sayText: sayText
}

function sayText(text, author){
    console.log(`${author} said: ${text}`);
}

module.adminSaysHello();
module.adminSaysText("Good Bye");
module.sayText("Hello, my name is Foo", "Foo");

执行上述脚本时,出现以下错误:

    adminSaysText: sayText(text, "admin"),
                           ^

ReferenceError: text is not defined

如何正确执行此导出?

标签: javascriptnode.jsmodule

解决方案


您应该使用 JavaScript 中的闭包功能来使其工作。尝试这个

module.exports = {
    adminSaysHello: sayText("Hello", "admin"),
    adminSaysText: sayText(text, "admin"),
    sayText: sayText
}

function sayText(text, author){

  return function(){
    console.log(`${author} said: ${text}`);
  }
}

module.adminSaysHello();
module.adminSaysText("Good Bye");
module.sayText("Hello, my name is Foo", "Foo");


推荐阅读