这里的函数为什么要这样写
(function(i){
// 补充代码
li[i].onclick=function(){alert(i)}
})(i)
如上代码,为什么函数这里的要加括号跟i;
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>2-1</title>
<style>
/*补充代码*/
li:hover{cursor:pointer;}
</style>
</head>
<body>
<!-- 补充代码 -->
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<script>
var li=document.getElementsByTagName("li");
for(var i=0,len=li.length;i<len;i++){
(function(i){
// 补充代码
li[i].onclick=function(){alert(i)}
})(i)
}
</script>
</body>
</html>
正在回答 回答被采纳积分+1
(function(i){
// 补充代码
li[i].onclick=function(){alert(i)}
})(i)
同学你好,首先我们来个分解:
第一:最外层是个匿名函数 ,在程序运行会预解析,跟普通函数不同,function后面不加名字会报错,为了让匿名函数正常通过,所以给匿名函数最外层添加了个括号。
第二:匿名函数没有名字,我们怎么调用呢?普通函数是 函数名()去调用,那么匿名函数我们直接function(){
}() 在后面直接加花括号就可以自调用。
上面的匿名函数设置了参数i,那么它后面调用的花括号传入的是实参i,其实跟普通函数一样传参,只不过没了名字而已
最后是不是function(i){
}(i)
为了避免解析错误在外层不仅可以加()还可以加符合语法的运算符,比如在!+ - 等符号在function前面:如!function(){
}
- 参与学习 人
- 提交作业 467 份
- 解答问题 4826 个
本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星