我需要导出相同的预定义函数,但导出时具有不同的参数。
我要实现的目标:
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
如何正确导出?
答案 0 :(得分:2)
您应该利用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");
答案 1 :(得分:2)
您需要创建其他函数,然后使用特定的参数调用原始函数。看起来像这样:
module.exports = {
adminSaysHello: () => sayText('Hello', 'admin'),
adminSaysText: (text) => sayText(text, 'admin'),
sayText: sayText
}