zoukankan      html  css  js  c++  java
  • 闭包练习(一)

    在作用域中首先要处理两件事:

    • 形参赋值
    • 变脸提升

    下面几道题

    <script>
      window.onload = function () {
        test4();
      }
      
      
      function test1() {
        console.log(a);
        var a = 12;
        function fn() {
          console.log(a);
          var a = 13;
        }
        fn();
        console.log(a)
        /* a的三次输出 分别是 undefine undefine  12 */
      }
      
      function test2() {
        console.log(a);
        var a = 12;
        function fn() {
          console.log(a);
          a = 13;
        }
        fn();
        console.log(a)
        /* a的三次输出 分别是 undefine 12  13 */
      }
      
      function test3() {
        console.log(a);
        a = 12;
        function fn() {
          console.log(a);
          a = 13;
        }
        fn();
        console.log(a)
        /* 程序报错 a 没申明 */
      }
      
      function test4() {
        var foo=1;
        function bar() {
          if(!foo) {
            var foo=10;
          }
          console.log(foo);
        }
        bar();
        
        /* 10 */
      }
      
    </script>

    用图解说最后一题:

      首先是开始的window全局作用域

      然后为函数开辟堆栈内存

      最后分别在各自作用域内从上往下执行代码

  • 相关阅读:
    69. 二叉树的层次遍历
    17. 子集(Subsets)
    33. N皇后问题(回溯)
    15. 全排列
    53. 数字组合 II
    135. 数字组合
    95. 验证二叉查找树
    88. 最近公共祖先
    245. 子树
    [python应用]python简单图片抓取
  • 原文地址:https://www.cnblogs.com/yaobolove/p/8546175.html
Copyright © 2011-2022 走看看