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全局作用域

      然后为函数开辟堆栈内存

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

  • 相关阅读:
    leetcode59
    leetcode95
    leetcode96
    leetcode787
    leetcode150
    leetcode165
    leetcode739
    快速搭建:Djangorest-framework的restful项目
    编写部署用到的部分shell脚本收集
    pandas:dataframe删除某些不为non的行
  • 原文地址:https://www.cnblogs.com/yaobolove/p/8546175.html
Copyright © 2011-2022 走看看