閉包

要理解閉包,首先必須理解Javascript特殊的變量作用域。
變量的作用域無非就是兩種:全局變量和局部變量。
Javascript語言的特殊之處,就在于函數內部可以直接讀取全局變量
注意:
1.在函數外部自然無法讀取函數內的局部變量。
2.函數內部聲明變量的時候,一定要使用var命令。如果不用的話,你實際上聲明了一個全局變量!

代碼示例
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <script type="text/javascript">

    //閉包
      var num1 = 5;

      function testFn1() {
        var num2 = 10;
        //console.log(num3);報錯,外部不噩夢訪問函數內部已定義的變量

        function Fn2() {
          var num3 = 20;
          return num1 + num2 + num3;
        }
        return Fn2();
      }

      function testFn2() {
        var a = testFn1();
        var b = 10;
        console.log(a+b);//45
      }

      testFn2();
    </script>
  </body>
</html>

三、閉包的概念
各種專業文獻上的“閉包”(closure)定義非常抽象,很難看懂。我的理解是,閉包就是能夠讀取其他函數內部變量的函數。
由于在Javascript語言中,只有函數內部的子函數才能讀取局部變量,因此可以把閉包簡單理解成“定義在一個函數內部的函數”。
所以,在本質上,閉包就是將函數內部和函數外部連接起來的一座橋梁。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 作用域和閉包是 JavaScript 最重要的概念之一,想要進一步學習 JavaScript,就必須理解 Java...
    劼哥stone閱讀 1,199評論 1 13
  • ● 閉包基礎 ● 閉包作用 ● 閉包經典例子 ● 閉包應用 ● 閉包缺點 ● 參考資料 1、閉包基礎 作用域和作...
    lzyuan閱讀 962評論 0 0
  • 閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包實現。 一、變量...
    zock閱讀 1,085評論 2 6
  • 閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包實現。 一、變量...
    zouCode閱讀 1,284評論 0 13
  • 天涯勞夢遠,閑居動離情。 往日故鄉水,今日淚分明。
    古風長歌閱讀 99評論 0 0