参数不固定,但总是执行最后一个参数(回调函数)
发布于 6 年前 作者 helloMane 4006 次浏览 来自 问答

例如一个 //定义函数a function a(arg1, arg2, arg3, callback){ callback(); }

//调用函数a a(“hello”, function(){ console.log(“hello world”); }) 如果有时候只传一个arg1和callback,怎么样让callback正确的执行。 每次都会提示callback is not a function;

8 回复

arguments或…可变参数

@okotta1 能不能给我说说具体的做法?我看了下想写成function a(…args, callback){}但是不行,写成function a(arg1, …args){}又不知道怎么调用最后那个回调函数。。。

let args=_.toArray(arguments);
callback=args.pop();
let args = Array.from(arguments);
let callback = () => {};
if (typeof args[args.length - 1] === 'function') {
	callback = args[args.length - 1];
}

function A(...param) {
	var callback = param[param.length-1];
	param.pop();
	callback(param);
}

function callback(argument) {
	console.log(...argument);
}
A(1,2,3,callback);
A('a','b','c',callback);
// 1 2 3
// a b c

7{L{S%UXG82H5JJ$X}D_HJ7.png

function A(...param) {
	var callback = param.pop();
	callback(param);
}

function callback(argument) {
	console.log(...argument);
}
A(1,2,3,callback);
A('a','b',callback);
// 1 2 3
// a b 

简化一点

谢谢大家,学到了很多,下来再去补补ES的知识

@Mr-izhe param.pop() 意义是什么,和那个简化的对比

回到顶部