1 传递函数作为参数
function hello(){
console.log("hello");
}
function say(func){
func();
}
say(hello);
注意:say(hello)不能写成say(hello()),后者会直接调用hello()函数并返回一个undefined给say()!
2 传递带参函数作为参数
function hello(content){
console.log(content);
}
function say(func, content){
func(content);
}
say(hello, "hello");
其实诀窍就是将函数引用和参数分开传递即可。
3 setTimeout中传递带参函数
function hello(content){
console.log(content);
}
setTimeout(() => hello("hello"), 1000);
其实就是再在外面包一层匿名函数,然后再在这个匿名函数里面执行真正的函数。这里我使用了lambda表达式更简洁,同理等价于function(){hello("hello")}。