您好,匿名用户
随意问技术百科期待您的加入

js函数的特点

0 投票
<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
	<ul id="nav_ul">
		<li><a href="">1</a></li>
		<li><a href="">2</a></li>
		<li><a href="">3</a></li>
		<li><a href="">4</a></li>
	</ul>
<script type="text/javascript">
var a = document.getElementById("nav_ul").getElementsByTagName("a");
for (var i = 0; i < a.length; i++) {
	a[i].onclick = function() {
		alert(i);
	}
}
</script>
</body>
</html>

上面代码中,无论点击那个连接,都是提示4,这个可以理解,但是将onclick放入单独函数中却正常,如下

<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
	<ul id="nav_ul">
		<li><a href="">1</a></li>
		<li><a href="">2</a></li>
		<li><a href="">3</a></li>
		<li><a href="">4</a></li>
	</ul>
<script type="text/javascript">
var a = document.getElementById("nav_ul").getElementsByTagName("a");
for (var i = 0; i < a.length; i++) {
	yy(i);
}
function yy(i) {
	a[i].onclick = function() {
		alert(i);
	}
}
</script>
</body>
</html>

如上,点击连接正常,请问这是什么原因?是js的函数有什么特别之处吗?

用户头像 提问 2013年 10月27日 @ Hermes 列兵 (61 威望)
分享到:

1个回答

0 投票

关键词:闭包。

供参考:javascript深入理解js闭包

用户头像 回复 2013年 11月1日 @ Fiora 上等兵 (297 威望)
提一个问题:

相关问题

0 投票
1 回复 14 阅读
0 投票
1 回复 66 阅读
0 投票
1 回复 46 阅读
用户头像 提问 2013年 9月23日 @ Evelynn 上等兵 (244 威望)
0 投票
0 回复 1 阅读
用户头像 提问 2014年 6月7日 @ Nero 上等兵 (377 威望)
0 投票
1 回复 32 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...