【问题标题】:Self invoking functions javascript自调用函数 javascript
【发布时间】:2011-07-16 06:33:21
【问题描述】:

我在 firefox 和 chrome 中都写了一个自调用函数,它不会调用。

我写了一些大意

(function () { alert("THE"); })();

自调用函数在当前浏览器中不起作用吗?

谢谢

编辑:我确实包含了所有必要的标签,并且所有其他代码都在页面上工作

【问题讨论】:

  • “自我调用”?你什么意思?顺便说一句,它确实适用于 chrome
  • 您有该页面的链接吗?该代码有效。如果您将其替换为 alert("THE"); 而不使用该功能怎么办。警报是否执行?我不这么认为。
  • 这部分代码完美运行。显示任何周围的代码。确保没有其他 JavaScript 产生错误(您可以检查 Firebug 或 Chrome 的控制台)

标签: javascript


【解决方案1】:

“自调用函数”实际上并不是 javascript 的一部分,它只是人们调用特定代码模式(如 AJAX 等)的术语;这些模式应该适用于 javascript 工作的任何地方。

您所说的“自调用函数”只是创建一个匿名函数并立即调用它(而不是将其存储在 var 中,作为对象值,作为函数参数等)。

即以下内容基本相同:

var f = function(){...}; f()

( function(){...} )()

因此,因为您的“自调用函数”是 javascript 的基本部分,所以除非内部无法正常工作或您的环境混乱,否则它不可能不工作。您可以将您的代码复制粘贴到一个新的空白页上,它会正常工作。肯定有其他问题:

在您的开发控制台中检查您的错误。具体来说,检查以确保您没有语法错误,或者您正在测试它的网页没有发生一些奇怪的事情(例如,如果您以某种方式重新定义 alert...)。

【讨论】:

  • 你说得对,问题是我有一个语法错误,它之前的语句有一个隐含的分号,这应该是明确的。导致解析错误
【解决方案2】:

我遇到了一个自调用函数的问题,它产生了这个错误......

Uncaught TypeError: object is not a function

问题是由于在左括号之前没有分号结束行

【讨论】:

  • 是的,我有同样的错误,添加了分号,瞧。
【解决方案3】:

该功能有效。 Javascript 支持函数式编程,因此对于一个不运行该代码的浏览器来说,即使对于一个非常旧的浏览器来说也是荒谬的。您确定正在达成该声明吗?尝试调试该语句之前出现的 javascript。

【讨论】:

    【解决方案4】:
    <script type="text/javascript">
      (function() {
         alert('Hello World!');
      })();
    </script>
    

    适用于我在这台机器上安装的所有浏览器。

    【讨论】:

      【解决方案5】:

      这个功能绝对有效。我会检查您的浏览器控制台是否有页面中的任何 js 错误。也许您可以尝试在脚本开头放置一个简单的 console.log 函数,以查看是否首先调用了任何 JavaScript。

      【讨论】:

        【解决方案6】:

        这个带有返回值的自调用函数将在所有当前浏览器(Safari、Chrome 和 Firefox)中正常工作。该函数会立即自动匿名执行。

        <script type="text/javascript">
            alert((function(){
                return("Hello World");
            })());
        </script>
        

        【讨论】:

          猜你喜欢
          • 2011-07-19
          • 2016-12-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-06
          • 1970-01-01
          相关资源
          最近更新 更多