js-闭包代码演示
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>js-闭包代码演示</title>
</head>
<body>
<span>1</span>
<span>2</span>
<span>3</span>
<script>
var elements=document.getElementsByTagName("span");
for(var i=0;i<elements.length;i++){
elements[i].onclick=function(){
console.log(i);
}
}
for(var i=0;i<elements.length;i++){
(function (m){
elements[i].onclick=function(){
console.log(m);
}
})(i);
}
//在外部调用内部变量和方法
function Outter(){
var InnerVar=0;
var s=function Inner(){
InnerVar++;
console.log("InnerVar:"+InnerVar);
}
return s;
}
var test=Outter();
test();
//实战案例
function searchTxt(){
var alreadyState=new Array();
var txtResult=new Array();
var getResult=function(txt){
if(alreadyState[txt]==1){
console.log("已经有结果了,正在返回");
return txtResult[txt];
}
else{
console.log("正在为您搜索"+txt+"的结果");
alreadyState[txt]=1;
txtResult[txt]="这是"+txt+"的搜索结果!";
return txtResult[txt];
}
}
return getResult;
}
var mySearch=searchTxt();
mySearch("JavaScript");
mySearch("JavaScript");
</script>
</body>
</html>