js闭包绑定元素
閉包,官方對閉包的解釋是:一個擁有許多變量和綁定了這些變量的環境的表達式(通常是一個函數),因而這些變量也是該表達式的一部分。閉包的特點: 1. 作為一個函數變量的一個引用,當函數返回時,其處于激活狀態。 2. 一個閉包就是當一個函數返回時,一個沒有釋放資源的棧區。
簡單的說,Javascript允許使用內部函數---即函數定義和函數表達式位于另一個函數的函數體內。而且,這些內部函數可以訪問它們所在的外部函數中聲明的所有局部變量、參數和聲明的其他內部函數。當其中一個這樣的內部函數在包含它們的外部函數之外被調用時,就會形成閉包。
?
常見的陷阱: function createFunctions(){ ??var result = []; ??for (var i=0; i < 10; i++){ ????result[i] = function(){ ??????return i; ????}; ??} ??return result; } var funcs = createFunctions(); for (var i=0; i < funcs.length; i++){ ??console.log(funcs[i]()); } 開始以為輸出的是0~9,其實界都是10個10,以為他是等for循環完之后才會做賦值,而不是每循環一次就實例:
循環綁定元素:
方法一: <div class="button">1</div>
<div class="button">2</div>
<div class="button">3</div>
<div class="button">4</div>
<script type="text/javascript">
var div = document.getElementsByTagName('div')
for( var i=0;i<div.length;i++) {
(function (i) {
console.log(div[i].innerHTML);
div[i].οnclick=function () {
alert(div[i].innerHTML)
}
})(i);
} </script>
這是一個簡單的閉包,它會循環綁定<div>元素,點擊哪個<div>,就會彈出它<div>所包含的內容
待續...
轉載于:https://www.cnblogs.com/MyIsLu/p/6554875.html
總結
- 上一篇: 小学四则运算界面版
- 下一篇: MAC通过SSH使用PEM文件登录