[英]Overloaded function call in nodeJS
我有两个js文件add.js和testAdd.js
module.exports = function add(x,y) {
console.log("------Starts x+y----");
var a = x+y;
console.log(a);
return a;
}
module.exports = function add(x,y,z) {
console.log("------Starts x+y+z----");
var a = x+y+z;
console.log(a);
return a;
}
var add = require('./add');
add(300,100);
add(300,100,233);
从testAdd我调用add.js中的add方法
发生的事情是函数调用总是转到add(x,y,z),因为函数没有根据参数进行选择(如java中所示)。
我是nodeJS的新手。 有人能帮我理解这个流程吗? 并帮助我解决这个问题。 提前致谢。
连接控制台o / p: -
JavaScript没有函数重载。 如果您希望函数采用可选的第三个参数,则可以设置默认值(使用最新的Node版本):
function add(x, y, z = 0) {
...
}
您可以将它与两个( add(300, 100)
)或三个( add(300, 100, 233)
)参数一起使用。
如果您没有最新的Node版本,则必须对第三个参数进行一些手动验证:
function add(x, y, z) {
z = Number.isFinite(z) ? z : 0;
...
}
Javascript不支持函数重载。 虽然罗伯特克尔普的解决方案很棒。 还有一种方法可以使用。这就是参数对象 。
当你要传递给函数的参数数目不详的论点是非常好的。 在这里看到更多 。
下面是它的外观。
//add.js
function add() {
var args=Array.prototype.slice.call(arguments);
console.log(arguments);
console.log(args);
console.log("------Starts x+y+z+.....and so on----");
var ans = args.reduce(function(prev,curr){return prev+curr;});
console.log(ans);
return ans;
}
var sum = add(1,8,32,4);
module.exports = add;//to make it available outside.
在执行上述。(作为node add.js
)时,输出如下。
{ '0': 1, '1': 8, '2': 32, '3': 4 }
[ 1, 8, 32, 4 ]
------Starts x+y+z+.....and so on----
45
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.