考虑以下内容:
(function () {
var _searchUsers = function () {
console.log("Searching...");
};
var search = (function () {
_searchUsers();
this = function () {
_searchUsers();
}
})();
//Some onclick event handler
function click () {
search();
}
})();
有没有更简洁的方法在javascript中实现这个功能?我想声明一个函数并让它立即执行,这就是为什么我把它变成了一个IIFE(自执行函数),但我也想在脚本生命周期的其他地方引用这个函数,比如当用户单击按钮时,上面调用了"click"函数。
用例:
我有一个用户表,在页面加载时,我想让AJAX请求立即获取用户,我还希望用户能够在点击按钮时加载用户,假设我有一个搜索框,它将文本发送到我的API并返回用户的名字匹配给定的文本。
上面的代码片段处理这个要求,我只是想知道是否有一个更简洁的方法来实现这一点,我也只是有兴趣看看人们发布的答案。
这是另一个选项:
(function () {
var _searchUsers; // Declare the variable like you did already
(_searchUsers = function (){ // Assign the function, and immediately call it.
console.log("Searching...");
})();
//Some onclick event handler
function click () {
_searchUsers();
}
})();
大多数情况下,我看到这被实现为一个命名的IIFE函数,在执行后返回它自己。因为它是一个命名函数,所以可以稍后在作用域中使用。
(function () {
onClick(function MyFunction(){
// logic code goes here
return MyFunction;
}());
})();