自调用函数javascript

问题描述 投票:0回答:7

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

我写了一些东西,大意是

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

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

我确实包含了页面上所有必要的标签和所有其他代码

javascript browser iife
7个回答
11
投票

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

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

即以下内容基本相同:

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

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

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

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

alert
...)。


4
投票

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

Uncaught TypeError: object is not a function

问题是由于在左括号之前没有分号结束该行而导致的


3
投票
<script type="text/javascript">
  (function() {
     alert('Hello World!');
  })();
</script>

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


2
投票

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


0
投票

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


0
投票

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

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

-1
投票

我也有类似的问题。我在下面提到。

我无法在任何浏览器上运行这个自调用函数

(function myfunc() {
    var x = 34;
    console.log(x);
})();

但是每当我像下面这样添加 window.onload 时,它就工作得很好:

window.onload = (function myfunc() {
    var x = 34;
    console.log(x);
})();
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.