02_做用域與執行上下文區別

<body>
<!--
1. 區別1
  * 全局做用域以外,每一個函數都會建立本身的做用域,做用域在函數定義時就已經肯定了。而不是在函數調用時
  * 全局執行上下文環境是在全局做用域肯定以後, js代碼立刻執行以前建立
  * 函數執行上下文是在調用函數時, 函數體代碼執行以前建立
2. 區別2
  * 做用域是靜態的, 只要函數定義好了就一直存在, 且不會再變化
  * 執行上下文是動態的, 調用函數時建立, 函數調用結束時就會自動釋放
3. 聯繫
  * 執行上下文(對象)是從屬於所在的做用域
  * 全局上下文環境==>全局做用域
  * 函數上下文環境==>對應的函數使用域
-->
<script type="text/javascript">
  var a = 10,
    b = 20
  function fn(x) {
    var a = 100,
      c = 300;
    console.log('fn()', a, b, c, x)
    function bar(x) {
      var a = 1000,
        d = 400
      console.log('bar()', a, b, c, d, x)
    }

    bar(100)
    bar(200)
  }
  fn(10)
</script>
</body>
相關文章
相關標籤/搜索