试验了一下js中闭包的概念,发现没有达到小弟我的预期,请问一下
试验了一下js中闭包的概念,发现没有达到我的预期,请教一下!
我自己写了一个很简单的js代码,我期待的是,每次访问闭包的时候, n+1,并且alert出来。代码如下:
我期待的结果是,当我点击按钮的时候,弹出两次alert,一次显示1,一次显示2.
但是实际的结果是两次都显示了1.这是为什么呢?
请指点!
------解决思路----------------------
因为每次调用FP();返回的对象 和内部的n都不一样,每次访问都创建一个n
------解决思路----------------------
我自己写了一个很简单的js代码,我期待的是,每次访问闭包的时候, n+1,并且alert出来。代码如下:
<html><head><title>xyz</title></head><body>
<input type="button" id="btn" value="ClickToSee" onclick=f() />
<script type="text/javascript">
function FP() {
var n = 0;
return function(){return n=n+1;}
}
function f()
{
var fObj = FP();
alert(fObj());
var fObj2 = FP();
alert(fObj2());
}
</script></body></html>
我期待的结果是,当我点击按钮的时候,弹出两次alert,一次显示1,一次显示2.
但是实际的结果是两次都显示了1.这是为什么呢?
请指点!
------解决思路----------------------
因为每次调用FP();返回的对象 和内部的n都不一样,每次访问都创建一个n
------解决思路----------------------
function FP() {
var n = 0;
return function(){return n=n+1;}
}
function f() {
var fObj = FP();
alert(fObj());
alert(fObj());
}
f()