js面試題知識點全解(一閉包)

來源:互聯網
上載者:User

標籤:ons   修改   範圍   fun   實際應用   child   pre   面試題   listener   

閉包使用情境:
1.函數作為傳回值,如下情境

 1 function F1(){ 2     var a = 100 //自由變數 3     //返回一個函數(函數作為傳回值) 4     return function(){ 5         console.log(a) //a是定義的時候 的範圍,不是執行的時候的範圍,為100 6     } 7 } 8 //f1得到一個函數 9 var f1 = F1()10 var a = 200 //全域範圍,不影響函數內範圍11 f1()

2.函數作為參數傳遞

 1 function F1(){ 2     var a = 100 //自由變數 3     return function(){ 4         console.log(a) //自由變數,父範圍尋找 5     } 6 } 7 var f1 = F1() 8 function F2(fn){ 9     var a =30010     fn() 11 }12 F2(f1) //輸出100

3.實際開發中閉包的應用:
閉包實際應用中主要用於封裝變數,收斂許可權

 1 function isFirstLoad(){ 2     var _list = [] //放在函數內部,封裝變數,使外部無法修改 3     return function (id){ 4         if (_list.indexOf(id) >= 0){ //indexOf() 方法可返回某個指定的字串值在字串中首次出現的位置。如果要檢索的字串值沒有出現,則該方法返回 -1。 5             return false 6         }else{ 7             _list.push(id) 8             return true 9         }10     }11 }12 13 //使用14 var firstLoad = isFirstLoad()15 firstLoad(10) //true16 firstLoad(10) //false17 firstLoad(20) //true

執行個體:建立10個a標籤,點擊哪個彈出哪個數字

錯誤寫法:

 1 //錯誤寫法 2 var i,a 3 for( i = 0; i<10; i++){ 4     a = document.createElement(‘a‘) 5     a.innerHTML=i+‘<br/>‘ 6     a.addEventListener(‘click‘,function(e){ 7         e.preventDefault() //preventDefault() 方法阻止元素髮生預設的行為(例如,當點擊提交按鈕時阻止對錶單的提交)。 8         alert(i) //i都是10,i是自由變數,要去父範圍(全域範圍)擷取值,此時i已執行完,值為10 9     })10     document.body.appendChild(a)11 }

 正確寫法:

 1 var i 2 14 for( i = 0; i<10; i++){ 3 15     (function(i){ 4 16         var    a = document.createElement(‘a‘) 5 17         a.innerHTML=i+‘<br/>‘ 6 18         a.addEventListener(‘click‘,function(e){ 7 19             e.preventDefault() //preventDefault() 方法阻止元素髮生預設的行為(例如,當點擊提交按鈕時阻止對錶單的提交)。 8 20             alert(i)  9 21         })10 22         document.body.appendChild(a)11 23     })(i) //建立一個自執行函數12 24 }

 

js面試題知識點全解(一閉包)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.