1. 程式人生 > >簡單明瞭的理解js閉包

簡單明瞭的理解js閉包

摘要

在學習js的過程中,閉包是個重要的知識點,對這個知識點不同人有不同的解釋,概念也很抽象,導致學習起來遲遲不能理解;

原理

js中function關鍵字會進行預解釋,在記憶體中安排一個記憶體空間,把函式體安排給函式名,隨時可以呼叫,在呼叫時在函式內部會形成一個私有的作用域,當函式執行完成時,一般情況下這個作用域會自動銷燬,裡面的變數也隨之銷燬了,但是在某些情況下這些作用域不會銷燬,裡面的變數也會存在,這就形成了一個閉包;

作用域不會銷燬的情況

1.閉包——函式 裡 返回一個引用型別的數值(函式,物件,陣列)並且由一個變數接收;

function fn() {
        var num=1;
        return function () {
            
        }
    }
    var fn=fn();
    fn();

2.給dom物件繫結點選事件時;

var odiv = document.getElementById('odiv');
odiv.click=function(){}

3.返回函式在執行 不會馬上銷燬;

function fn() {
        var num=1;
        return function () {
            
        }
    }
    fn()();