js匿名函数 看了一些资料 不是很懂 希望能够详细点

不知所措ii 发布于 2013/11/14 09:34
阅读 326
收藏 0

@红薯 你好,想跟你请教个问题:

这边看到一段代码  不是很清楚她是怎么调用的:

<script type="text/javascript">
(function(){
var wait = document.getElementById('wait'),href = document.getElementById('href').href;
var interval = setInterval(function(){
var time = --wait.innerHTML;
if(time <= 0) {
location.href = href;
clearInterval(interval);
};
}, 1000);
})();
</script>
难道 它是在加载的时候调用?



加载中
0
飞炀
飞炀
应该是当浏览器解析到这里的时候,就开始执行了。
0
-Jw-
-Jw-
即时执行函数
-Jw-
-Jw-
回复 @不知所措ii : 你看到函数后面的括号吗 那就是调用了这个匿名函数了 页面载入到这段js后就执行了
不知所措ii
不知所措ii
能清楚点吗? 什么时候执行?
-Jw-
-Jw-
推荐你一本书 JavaScript模式 便宜 薄 内容很充实
0
西
西城小生
var func=function(){alert("ok");}

func();
可以说等价于(function(){alert("ok");})();
我是这么理解的。




0
MrZQ
MrZQ
(function(){})(),这里省略了一个(function(){})(window)
0
evilgod528
evilgod528

引用来自“西城小生”的答案

var func=function(){alert("ok");}

func();
可以说等价于(function(){alert("ok");})();
我是这么理解的。




同意,对于命名函数,可以通过 函数名()  的形式来调用该函数,但是对于匿名函数来讲,由于没有函数名来指向该函数,所以如果需要调用该函数,可以通过 (匿名函数)(); 来让该匿名函数运行。
0
aiasfina
aiasfina

对,浏览器会立即执行。为的是避免 var 定义全局变量。

在 Javascript 文件或script标签顶层中使用

var str = 'balabal'
会产生隐式全局变量,相对于 window.xx 这种可以手动 delete 掉的全局变量,隐式全局变量只能通过即时执行函数来隔离上下文。
(function(){ var s = ''; }()); //老道推荐这种..
(function(){ var s = ''; })();
0
开源无憾
开源无憾
加载后立即执行
返回顶部
顶部