Javascript - 是否可以在定义之后进行函数调用,然后在范围内的其他地方作为函数引用

时间:2016-11-11 11:16:42

标签: javascript

请考虑以下事项:

 (function () {

     var _searchUsers = function () {
         console.log("Searching...");
     };

     var search = (function () {

         _searchUsers();

         this = function () {
              _searchUsers();
         }

     })();

     //Some onclick event handler
     function click () {
         search();
     } 
 })();

在javascript中有更简洁的方法来实现此功能吗?我想声明一个函数并让它立即执行,这就是为什么我把它变成了一个IIFE(自执行函数)但我也希望在生命周期的后期在其他地方引用该函数脚本,例如当用户点击按钮并且"点击"上面调用了函数。

示例用例:

我有一个用户表,在页面加载时我想发出一个AJAX请求来立即获取用户,我还希望用户只需点击一下按钮就可以加载用户,我们说我有一个搜索框,可以将该文本发送到我的API并返回用户的姓名与给定文本匹配的内容。

上面的代码片段处理了这个要求,我只是想知道是否有更简洁的方法来实现这一点,而且我也只是想看看人们发布什么作为答案。

2 个答案:

答案 0 :(得分:1)

这是另一种选择:

(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();
    }
})();

答案 1 :(得分:0)

大多数情况下,我认为这是一个名为IIFE的函数,它在执行后自动返回。因此它可以在以后用于范围,因为它是一个命名函数。

(function () {

     onClick(function MyFunction(){
          // logic code goes here
          return MyFunction;
     }());
})();