Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript—是否可以在定义后自行调用函数,然后作为作用域中其他位置的函数引用_Javascript - Fatal编程技术网

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(){}();这就是我想要的:)