javascript - 如何通过导出导出相同的函数但具有不同的参数
问题描述
我需要导出相同的预定义函数,但通过导出具有不同的参数。
我想要达到的目标:
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
如何正确执行此导出?
解决方案
您应该使用 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");
推荐阅读
- python - 如何在一个语句中将不同的参数传递给不同的方法?
- php - Yii2 无法运行控制台应用程序
- python - Scikit-learn:查找具有最大残差的记录
- c++ - 如何在三个模板参数中指定构造函数
- android - 如何在 Google Map Android 上绘制行车路线并在 Google Map 应用程序等没有行车路线时应用步行模式?
- python - Python list.sort() 函数是什么类型的?代码中有什么文件?
- python - 为什么 Dropout 会降低我的模型准确性?
- php - 在 PHP 中使用 FOR 替换所有字符串值
- laravel - File::make('Fichier', 'path')->storeOriginalName('original_name') 给我 gEUBH18u1UdjoPBS0POQB64xit5PF05Rnl8M5lMI.pdf
- ajax - 使用 ajax 方法发布 laravel 时出现错误 405(方法不允许)