Javascript—是否可以在定义后自行调用函数,然后作为作用域中其他位置的函数引用
考虑以下几点:Javascript—是否可以在定义后自行调用函数,然后作为作用域中其他位置的函数引用,javascript,Javascript,考虑以下几点: (function () { var _searchUsers = function () { console.log("Searching..."); }; var search = (function () { _searchUsers(); this = function () { _searchUsers(); } })(
(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();
}
})();
大多数情况下,我看到它被实现为一个命名函数,在执行后返回它自己。因为它是一个命名函数,所以以后可以在作用域上使用它
(function () {
onClick(function MyFunction(){
// logic code goes here
return MyFunction;
}());
})();
你为什么不直接调用
\u searchUsers(),而不是生活和这种杂耍呢代码>,声明后?所以基本上你希望有一个函数可以从多个地方搜索并调用它,或者函数逻辑本身依赖于输入?@Cerbrus出于某种原因我不喜欢这样做,我不确定为什么-也许我的推理没有实质内容,我应该改变我的观点。这背后的原因是,有时在我的团队中,其他开发人员会将逻辑放在函数定义和初始调用之间,然后初始调用会在代码中“丢失”。如果您不知道为什么要这样做,请坚持标准方式。声明一个函数并单独调用它没有错。实际上,这是一个很好的实践,它将引导您实现更好的代码管理。不要无缘无故地尝试忍者技巧,这样做的人应该有很强的理由。太棒了,我不知道我们可以用JS(var_name=function(){}();这就是我想要的:)