zoukankan      html  css  js  c++  java
  • js闭包理解与使用场景

    要理解闭包首先要知道什么是函数的作用域链

    因为有函数的作用域链存在,所以函数无论在哪里调用,函数都可以使用函数外部作用域的变量。

    当一个函数被调用时,会创建一个执行环境及相应的作用域链。然后使用arguments和其他命名参数的值来初始化函数的活动对象。此活动对象在当前函数作用域链的第一位,外部函数的活动对象在作用域链的第二位,外部函数的外部函数的活动对象在第三位,直至作为作用域链终点的全局执行环境。

    闭包的作用:

    实现一个作用域,达到封装的目的,这样做的好处是隐藏私有变量,防止污染全局变量;

    还可以实现缓存功能

     1        案例1:隐藏私有变量
     2 
     3         function pack() {
     4 
     5             var index;
     6 
     7             return function () {
     8 
     9                 return index++;
    10 
    11             };
    12 
    13         }
    14 
    15 
    16 
    17         var p = pack();
    18 
    19         p();
    20 
    21 
    22 
    23         案例2:缓存
    24 
    25         function createFab(n) {
    26             var _cache = {};
    27             return function (n) {
    28                 var result = 0;
    29                 if (_cache[n]) {
    30                     return _cache[n];
    31                 }
    32                 if (n === 1 || n === 2) {
    33                     result = 1;
    34                 }
    35                 else {
    36                     result = fab(n - 1) + fab(n - 2);
    37                 }
    38                 _cache[n] = result;
    39                 return result;
    40             }
    41         }
    42 
    43 
    44         var fab = createFab();
    45         console.info(fab(6));
    46         console.info(fab(6));
  • 相关阅读:
    request库下载
    tomcat启动正常,但是访问项目时,404. Eclipse没有正确部署工程项目
    Tomcat端口被占用
    administrator账户权限如何开启和关闭
    团队作业2 需求分析与原型设计
    矩阵快速幂
    散列函数的应用及其安全性
    递归实例
    芯片测试
    优先队列小知识
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/11921722.html
Copyright © 2011-2022 走看看