定义一个参数是函数的JS函数
// 这是一个JS函数,其参数是个函数
function test(func){
func(); // 执行传入的函数
}
1.参数是无参函数
// 1.无参函数
function a(){
alert("a()执行!");
}
// 测试
test(a); // 只需要填函数名
2.参数是有参函数
// 2.有参函数
function b(name){
alert("b(name)执行!name = " + name);
}
// 测试1(报错)
test(b("zhangsan")); // 传入参数的这一刻,b("zhangsan")就已经执行了,然后报错:func()不是一个函数。
// 测试2(函数内获取参数)
test(function(){ // 套一层匿名函数,在匿名函数中调用b(name);
var name = xxx; // 访问后台获取消息
b(name);
});
// 测试3(函数内获取参数)
test(b); // 只需要填函数名,在test函数中获取name,调用func(name);
应用场景1
// 应用场景1:通用的execute函数,根据业务传入自定义的处理函数
function execute(func){
// 获取后台数据...
var data = "测试数据";
if(typeof func === "function"){ // 如果传入的参数func是函数
func(data); // 调用自定义的处理函数
}
}
// 测试
execute(b);
应用场景2
// 应用场景2:给input标签添加回车按键处理函数
function onEnterKeyDown(inputId, func){
$("#"+inputId).on("keydown", function(e){
if(e.keyCode === 13 || e.which === 13){
func($(this).val()); // 调用传入的函数,并将搜索框里输入的内容作为参数传入
}
})
}
// 测试
// 1.js代码
$(function(){
onEnterKeyDown("nameInput", b); // input标签输入信息后,点击回车,调用b函数,并将输入内容作为参数传入
});
// 2.html代码
用户名:<input id="nameInput" type="text" value=""/>