闭包案例-01
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style>
body{font-family: helvetica arial sans-serif;font-size: 12px;}
h1{font-size: 1.5em;}
</style>
<script type="text/javascript">
window.onload=function(){
function makeSize(size){
return function(){ //通过匿名函数访问size 值
document.body.style.fontSize=size+'px';
}
}
var size12=makeSize(12);//闭包函数
var size13=makeSize(13);//闭包函数
var size14=makeSize(14);//闭包函数
document.getElementById('size-12').onclick=size12;
document.getElementById('size-13').onclick=size13;
document.getElementById('size-14').onclick=size14;
}</script>
<body>
<h1>h1 title</h1>
<p> text</p>
<a href="#"id="size-12">12</a>
<a href="#"id="size-13">13</a>
<a href="#"id="size-14">14</a>
</body>
</html>
*
看不懂的话可以先看这个案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
function player(){
var name="xiao ming";
function displayInfo(){
alert(name);
}
return displayInfo;//返回一个引用
}
var run=player();
run();
</script>
</body>
</html>
*
在函数外部可以访问函数内部的局部变量
函数内部的局部变量并没有随之函数的调用结束而销毁
再回头看第一个案列:
我们定义了一个mskeSize(),并在此函数内嵌套定义了匿名函数,并返回此匿名函数的引用,形成闭包。
之后我们将返回的匿名函数引用存到size 12 13 14 ,这三个函数引用也是底部三个超链接的单击事件回调函数。于是用户单击超链接时,通过这三个闭包可以改变页面字体的大小设置