<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>JavaScript函数的闭包</title>
</head>
<script>
//返回函数的函数
function one(){
console.info("one");
return function(){
console.info("two");
};
};
var returnedFunc=one();//one
returnedFunc();//two 因为会返回函数,加()代表执行
one()();//one two
//当返回函数访问外部函数变量
function outer(){
var value=100;
return function(){
console.info(value);
};
};
var result=outer();
result();//100,按道理来说外部函数outer执行完毕,value应该不存在,但是这里却可以访问,因为在JavaScript中,如果函数 总能 访问外部函数的变量,即使外部函数已经执行完毕了!
//所谓闭包的概念
func=function(){
var count=1;
return function(){
count++
return count;
};
};
retFunc=func();//内部函数返回的retFunc是整个外部函数的所有部分,包括count变量
for(i=0;i<5;i++){
console.info(retFunc());//1 2 3 4 5 6
};
//2
var transform=function(){
console.info("我是擎天柱");
transform=function(){//这里transform指代的是外部的transform
console.info("你上当了,我不是");
}
}
transform();//我是擎天柱
transform();//你上当了,我不是
</script>
<body>
</body>
</html>
javascript基础之六(函数的闭包)
最新推荐文章于 2023-07-16 20:07:18 发布