2011-07-16 45 views
4

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

我写东西的

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

做自我调用函数不行当前浏览器中的效果?

谢谢

编辑:我没有包括所有的基本标签和其他所有的代码工作的页面

+1

“self invoking”?你什么意思?顺便说一句,它在铬上工作 – DanC

+1

你有一个链接到页面?该代码有效。如果你用'alert(“THE”)替换它,''不用这个函数。警报是否执行?我不这么认为。 – Paulpro

+1

这部分代码完美工作。显示任何周围的代码。确保没有其他产生错误的JavaScript(你可以检查Firebug的或Chrome的控制台) –

回答

8

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

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

也就是说,以下是基本相同:

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

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

,是因为你的“自我调用函数”是JavaScript的一个基本组成部分,是没有可能的方式它不工作,除非内部不工作或你的环境搞砸了。你可以复制粘贴你的代码到一个新的空白页面,并且它会正常工作。还有其他一定会出错:

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

+2

你是对的问题是我有一个语法错误,语句之前有一个隐含的分号,它应该是明确的。它导致了一个解析错误 – rubixibuc

+0

https://jsfiddle.net/axd5d3y8/ – ServAce85

2

这个函数可以使用。 Javascript支持函数式编程,因此浏览器不会运行该代码,即使是一个非常古老的浏览器也是荒谬的。你确定这个陈述正在达成吗?尝试调试该语句之前发生的JavaScript。

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

适用于本机上安装的每个浏览器。

4

我曾与它生产这个错误自调用函数这个问题...

Uncaught TypeError: object is not a function 

问题是由不具有开放支架

+0

是的,我有同样的错误,添加了分号和瞧。 – Antoine

0

此功能之前结束行分号引起的绝对有效。我会检查您的浏览器的控制台在您的页面中的任何js错误。也许你可以试着在你的脚本的开头部署一个简单的console.log函数,看看是否有JavaScript被首先调用。

0

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

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