zoukankan      html  css  js  c++  java
  • 第七章:函数表达式

    //    递归函数
        function factorial(num) {
            if (num === 1) {
                return 1
            } else {
                return num * factorial(num - 1);
            }
    
    
        }
        console.log(factorial(99));
        /*arguments.callee  ====               表示函数本身 在递归时使用                                    */
        function fun() {
            console.log(arguments.callee)
        }
        fun()
        
        
        /*闭包==貌似啊好牛*的样子
             *   是指有权访问另一个函数作用域中的变量的函数
             *       创建闭包的常见方式是在一个函数内部创建另一个函数
             *   */
            function fn() {
                return function () {
                    console.log(1)
                }
            }
            fn()();
        
            /*每个函数都有一个执行环境,这个执行环境都有一个表示变量的对象
             *   全局环境的变量对象始终存在*/
            function compare(a, b) {
                if (a > b) {
                    return 1;
                } else if (a < b) {
                    return -1;
                } else {
                    return 0;
                }
        
            }
            /*当调用这个函数时会创建一个包含 arguments,a,b 的活动对象
            *       全局执行环境的变量对象在compare() 执行环境的作用域中处于第二位
            *       会创建一个预先包含全局变量对象的作用域链,这个作用被保存在内部的[[Scope]]属性中
            *
            *   函数执行时,会为函数创建一个执行环境
            *       */
        
            compare(1,2);
        
            /*一般而言当函数执行结束后,局部活动对象就会被销毁,内存中仅保存全局作用域(但是闭包的环境除外)*/
            
            
            /*this对象是在运行时基于函数的执行环境绑定的
                *  1 全局函数中this指向window
                *  2 而当函数作为某个对象的方法调用时this 就是那个对象
                *
                *   不过匿名函数的执行环境是具有全局性的 (因此this对象通常指向window)
                *
                *   每个函数被调用时都会自动取得两个特殊变量,
                *                       this
                *                       arguments
                * */
                var name='the window';
                var obj={
                    name:'my obj',
                    getName:function () {
                        return function () {
                            return this.name
                        }.bind(this);//加上bind(this)这里的this就是指这个对象了
                    }
                };
                console.log(obj.getName()())
  • 相关阅读:
    洛谷 P1443 马的遍历 BFS
    洛谷 P1583 魔法照片 快排
    洛谷 P1093 奖学金 冒泡排序
    洛谷 P3811 【模板】乘法逆元 如题
    洛谷 P3384 【模板】树链剖分 如题
    洛谷 P3379 【模板】最近公共祖先(LCA) 如题
    vijos 信息传递 tarjan找环
    洛谷 P3373 【模板】线段树 2 如题(区间加法+区间乘法+区间求和)
    酒厂选址
    ⑨要写信
  • 原文地址:https://www.cnblogs.com/aqigogogo/p/7639694.html
Copyright © 2011-2022 走看看