CNode

参数不固定,但总是执行最后一个参数(回调函数)

问答
HhelloMane发布于8 年前最后回复8 年前8 回复5599 浏览0 收藏

例如一个 //定义函数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)

O
okotta1#1·8 年前

arguments或...可变参数

H
helloMane#2·8 年前
引用 okotta1arguments或...可变参数

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

D
dbit-xia#3·8 年前
let args=_.toArray(arguments);
callback=args.pop();
A
AnzerWall#4·8 年前
let args = Array.from(arguments);
let callback = () => {};
if (typeof args[args.length - 1] === 'function') {
	callback = args[args.length - 1];
}

M
Mr-izhe#5·8 年前
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

M
Mr-izhe#6·8 年前
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 

简化一点

H
helloMane#7·8 年前

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

X
Xu-Angel#8·8 年前
引用 Mr-izhe

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

参与回复
登录后即可参与回复。登录