js閉包的初步理解

瀏覽:149 發布日期:2019/11/20 分類:功能實現 關鍵字: -
-
首先理解概念
定義:當一個函數的返回值是另外一個函數,而返回的那個函數如果調用了其父函數內部的其它變量,如果返 回的這個函數在外部被執行,就產生了閉包。

上代碼

function test(){
var count=0;
return function(){
count++;
alert(count);
}
}
var t1=test();//將方法賦值給一個對象,也可以使用下面的形式實例化一個方法對象,賦值給t1
//var t1=new test();
t1();//只是調用了方法內部的匿名方法;
t1();//第二次調用方法內部的匿名方法

結果

alert(1);
alert(2);
閉包的這種形式,允許在方法的內部擁有自己的私有變量,(如果是一般的方法,方法執行完之后,內部的私有變量會被回收掉)。并且通過在外部調用內部方法,對外部方法的私有變量進行修改。之所以私有變量沒有被回收,首先將方法作為一個變量t1保存起來,通過t1調用內部方法,來對t1中的私有變量進行修改。

方便理解,我寫了一個demo(一個計數器)
function(){
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<button onclick="myfunction()" >點擊計數器</button>
<p id="demo">0</p>
</body>
<script>
function test(){
var count=0;
return function(){
return count=count+1;
}
}
var t1=new test();
function myfunction(){
$("#demo").html(t1());
}

</script>
</html>
評論( 相關
后面還有條評論,點擊查看>>
天津快乐十分开奖结果