这是我在2016年的一本书中找到的异步函数的典型实现。我们声明var Obj,然后我们添加一个方法
Obj.prototype.doSomething(arg1_){}
然后我们称之为
test.doSomething(number, function(err,value){}
可以通过 arguments []
访问回调函数 var callback_ = arguments[arguments.length - 1];
所以即使回调函数没有被定义为原型中的参数,我们仍然可以传递它们?所以我们可以传递尽可能多的函数,即最多255个?
或
var fib = function (n) {
if (n < 2) return n;
return fib(n - 1) + fib(n - 2);
};
var Obj = function() { };
Obj.prototype.doSomething = function(arg1_) {
var callback_ = arguments[arguments.length - 1];
callback = (typeof(callback_) == 'function' ? callback_ : null);
var arg1 = typeof arg1_ === 'number' ? arg1_ : null;
if (!arg1) return callback(new Error('first arg missing or not a number'));
process.nextTick(function() {
// block on CPU
var data = fib(arg1);
callback(null, data);
});
}
var test = new Obj();
var number = 10;
test.doSomething(number, function(err,value) {
if (err)
console.error(err);
else
console.log('fibonaci value for %d is %d', number, value);
});
console.log('called doSomething');
答案 0 :(得分:2)
是。它不需要在javascript中声明所有参数。您可以在arguments数组中检索。 查看一些示例here
您可以看到in this post最大参数数量足够大。
答案 1 :(得分:0)
Javascript并不限制你的参数数量。您可以使用一个参数定义函数,但使用0,1,2或100参数调用它。
使用arguments
对象可以获得所有参数(以及其他一些东西),尽管它被认为有点难以阅读,并且在某些情况下它的行为与数组完全不同。