跳到主要内容
CNode

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

问答
HhelloMane发布于 8 年前最后回复 8 年前
856350

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

X
Xu-Angel#88 年前
引用 Mr-izhe

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

H
helloMane#78 年前

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

M
Mr-izhe#68 年前
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 

简化一点

M
Mr-izhe#58 年前
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

A
AnzerWall#48 年前
let args = Array.from(arguments);
let callback = () => {};
if (typeof args[args.length - 1] === 'function') {
	callback = args[args.length - 1];
}

D
dbit-xia#38 年前
let args=_.toArray(arguments);
callback=args.pop();
H
helloMane#28 年前
引用 okotta1arguments或...可变参数

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

O
okotta1#18 年前

arguments或...可变参数

参与回复

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