• js递归预编译总结


    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    </head>
    <body>
    作用域:
    1.变量(变量作用域又称上下文)和函数生效(能被访问)的区域
    2.全局、局部变量
    3.作用域的访问顺序

    递归:
    1.找规律
    2.找出口
    递归的好处:让代码更加简洁

    js运行三部曲:
    语法分析:
    预编译:发生在函数执行的前一刻

    函数声明整体提升
    变量 声明提升

    1.imply global 暗示全局变量:
    即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有。
    2.一切声明的全局变量,全是window的属性
    window 就是全局的域

    预编译四部曲:
    1.创建AO (Activation Object)(执行上下文) (生成一个GO对象 === Global Object === window)
    2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
    3.将实参值和形参统一
    4.在函数体里面找函数声明,值赋予函数体

    解释执行:



    由里面到外边,函数里边有声明使用里面的,如果没有,则使用外边的变量声明

    列如:
    <script>
    // 写一个函数,实现n的阶乘
    function jc() {
    if (n === 1){
    return;
    }
    return n * jc(n - 1)
    }
    jc();
    // 写一个函数,实现斐波那契数列
    function fb(n) {
    if (n === 1 || n === 2) {
    return 1;
    }
    return fb(n - 1) + fb(n - 2);
    }

    console.log(fb(5));
    (window.foo || (window.foo = 'bar'));
    console.log(window.foo )
    </script>


    </body>
    </html>
  • 相关阅读:
    socketserver源码简介
    Python中实现switchcase
    maven知识整理
    架构师成长之路(5)--如何获取知识(方法)
    架构师成长之路(4)--知识体系(方法)
    python 定义函数
    Git 使用规范流程
    Mybatis内置的日志工厂提供日志功能
    Log4j配置详解
    【log4j2 加载配置文件】 加载配置文件的三种方法
  • 原文地址:https://www.cnblogs.com/xiewangfei123/p/12239695.html
Copyright © 2020-2023  润新知