【发布时间】:2020-04-08 21:40:53
【问题描述】:
我正在尝试导出 js 文件的所有重载函数。这样我就可以在其他 js 文件中重用它们。但是,每当我尝试调用任何函数时,每次都会调用最高参数化函数。
reusefun.js
exports.getMessage = function(val1) {
return val1;
}
exports.getMessage = function(val1,val2) {
return val1+ " " +val2;
}
exports.getMessage = function(val1,val2,val3) {
return val1+ " " +val2+ " " +val3;
}
假设我正在使用这个文件,如下所示
我的文件.js
const re = require('./reusefun);
console.log(re.getMessage("a"));
然后调用 getMessage(val1,val2,val3) 而不是 getMessage(val1) 。
【问题讨论】:
-
Javascript 并没有真正做到这样的函数重载。您必须将自己的重载逻辑编写到单个函数中
-
js不支持重载函数,这里将
getMessge(val1)替换为getMessage(val1,val2,val3) -
在这种特殊情况下,您可以使用
[a,b,c].join(' ');来获得相同的结果。如果您对滚动自己的重载逻辑来处理可变数量/类型的参数感到好奇,那么这本身就是一个有趣的问题 -
在你的代码中你没有重载你的函数你只是一次又一次地分配属性 getMessage 并且最后一个分配属性仍然存在这就是为什么它总是调用最高参数函数分配接受两个参数的函数最后,它总是调用该函数,因此最好使用 exports.getMessage = (..arr) => arr.join(" ");这适用于各种情况。
标签: javascript node.js