(function () {})(); 这种方式定义function,看得不明白,求教了!

helloword222 2013-06-14 06:59:42

已经理解了这段闭包代码的意义了,但是在语法上面不完全理解这样子定义function的方式。主要是我标红色和蓝色的那两对括号。求教了,谢谢!

<html><head></head><body>
<ul><li>1</li><li>2</li><li>3</li><li>4</li></ul>
</body>
<script>
var liArr = document.getElementsByTagName("li");
var liArrLength = liArr.length;
for (var i = 0; i < liArrLength; i++) {
(function () {
var local_i = i;
liArr[i].onclick = function () {
alert(local_i);
}
})();
}
</script>
</html>
...全文
162 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloword222 2013-06-14
  • 打赏
  • 举报
回复
定义一个匿名函数并执行. 谢谢!
ftiger 2013-06-14
  • 打赏
  • 举报
回复
javascript 这种函数式编程与c java这种命令式编程最大的区别,就是函数是第一公民,函数可以没有名字,函数可以当成变量,函数内部可以再定义函数,由此引出不少有趣的写法。 (function () {})();立即执行函数 这种写法就是目前流行的框架和控件开发常见的手法,好处是立即执行函数内部形成一个闭包,在这里定义的变量名与其它地方的变量名天然隔离开,有效果防止命名冲突和隐藏内部变量和内部函数。
天际的海浪 2013-06-14
  • 打赏
  • 举报
回复
这三个代码是相等的,能看明白么?

var ff = function (){
};
ff()

var ff = function (){
};
(ff)()

(function (){
})()
天际的海浪 2013-06-14
  • 打赏
  • 举报
回复
这三个代码是相等的,能看明白么?

var ff = function (){
};
ff()

var ff = function (){
};
(ff)()
[code=javascript] (function (){ })()
  • 打赏
  • 举报
回复
fns();
孟子E章 2013-06-14
  • 打赏
  • 举报
回复
先执行括号的代码,这里的意思是定义一个匿名函数并执行

你执行下面的代码就明白了
<script>
(function(){ alert("ok1")})();

(function(param){ alert(param.location)})(window);
</script>

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧