簡單理解閉包的概念和立即執行函數


曾被人問起,立即執行函數是什么函數?他的回答是:閉包;我左思右想,又重新翻了一遍書,百度了一遍各種閉包的解釋。最后 我還是堅持我的理解:立即執行函數並不是閉包,只是實現了閉包中的變量私有化功能。

書上給閉包的定義如下:有權訪問另一個作用域中的變量的函數。 所以單從閉包的定義來講,自執行函數是不符合這一定義的,自執行函數是一個封閉的函數,無法訪問外部變量。

舉個最簡單的閉包的栗子

  function foo(){

    var a = “變量“;

    return function(){

      console.log(a)  

    }

  }

  調用foo()()  //打印結果:變量

  上面foo函數里返回了一個匿名函數,匿名函數可以訪問到foo函數里的a變量,所以 這個匿名函數就是個閉包。在本質上,閉包是將函數內部和函數外部連接起來的橋梁。;

舉個最簡單的立即執行函數的栗子:

  (function(){

    alert('123)

  }())//無法直接訪問其他函數內部的變量,只能通過傳參訪問外部變量;



  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM