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()())
  • 相关阅读:
    poj 2488 DFS
    畅通工程 并查集模版
    KMP 模板
    poj 1426 DFS
    poj 2528 线段数
    poj 3468 线段数 修改区间(点)
    CVPR2012文章阅读(2)A Unified Approach to Salient Object Detection via Low Rank Matrix Recovery
    如何制定目标
    Saliency Map 最新综述
    计算机视觉模式识别重要会议杂志
  • 原文地址:https://www.cnblogs.com/aqigogogo/p/7639694.html
Copyright © 2011-2022 走看看