zoukankan      html  css  js  c++  java
  • 作用域,闭包,this

    闭包体是javascript处理函数引用外部变量创建的封闭和独立的作用域,闭包体不会再函数调用完毕后就被回收,闭包体长期存在。只有当闭包体的外部引用被全部设置为null,闭包才会被回收。

                                -------题记

    闭包:有权访问另一个函数作用域中的变量的函数,创建闭包的常见方式就是在一个函数内部创建另一个函数。、

    匿名函数:匿名函数最大的用途是创建闭包(这是JavaScript语言的特性之一),并且还可以构建命名空间,以减少全局变量的使用。

    作用域:

    在创建某个函数时会创建一个预先包含全局对象变量的作用域链,这个作用域链将被保存到[scope]属性中。当调用这个函数时,会创建一个执行环境,然后通过复制函数的[scope]属性中的对象构建起执行环境的作用域链。此后又有一个活动对象被创建并推入执行环境作用域链的前端。作用域链本质就是一个指向变量对象的指针链条,只包含引用。

    副作用:闭包只能取得包含函数中任何变量的最后一个值,也就是说先前的值不会被找到,

    实例:

    每个函数内部的i都是10

    块级作用域和匿名函数的几点认识:

    1.闭包构建块级作用域:

    (function{

        //块级作用域

    })();

    2.匿名函数中定义的任何变量,都会在执行结束时被销毁

    function outputNumbers(count){
        (function(){
            for(var i=0;i<count;i++){
                alert(i);
            }
        })();
    alert(i);//出错
    }

    私有作用域和匿名函数的好处:

    ①私有作用域,每个开发人员都可以定义自己的变量,而不用担心扰乱全局作用域

    ②可以减少闭包占用的内存,因为没有指向匿名函数的引用,函数执行完作用域链就可以销毁

    注意点:匿名函数中的this

     

     

    this:this指代当前对象,this在对象中指示其父(对象);在对象的对象中this指代全局对象

    详解:

    http://www.cnblogs.com/temptation/p/3537928.html

     

     

  • 相关阅读:
    121. Best Time to Buy and Sell Stock
    70. Climbing Stairs
    647. Palindromic Substrings
    609. Find Duplicate File in System
    583. Delete Operation for Two Strings
    556 Next Greater Element III
    553. Optimal Division
    539. Minimum Time Difference
    537. Complex Number Multiplication
    227. Basic Calculator II
  • 原文地址:https://www.cnblogs.com/wanglao/p/3598092.html
Copyright © 2011-2022 走看看