JavaScript高级程序设计 读书笔记之八 Function类及闭包

JavaScript高级程序设计 读书笔记之八 Function类及闭包

  • Function类
  • Function类的特点
    • Function类本身也是一个函数,它可以像工厂函数一样构建新的函数实例。
    • 使用Function构造函数构建函数,可以动态地创建函数语句。
    • 可以将字符串形式的代码,通过Function的形式执行。
  • Function构造函数的使用
    • Function构造函数创建函数的形式:new Function(arg1, arg2, ... argN, functionBody)
    • arg1~argN:形式参数。
    • functionBody:字符串形式的函数体。
    • 示例:
      javascript
      // 使用Function构造函数创建函数
      var add = new Function('arg1', 'arg2', 'return arg1 + arg2;');
      console.log(add(1, 2)); // 输出3
  • 闭包
  • 闭包的概念
    • 闭包:一个可以访问自由变量的函数。
    • 自由变量:在一个函数中使用、但既不是函数参数也不是函数内部定义的变量。
  • 闭包的作用

    • 在需要多次访问某个变量时,使用闭包可以避免将该变量作为全局变量。
    • 创建私有变量。
    • 避免变量污染。
    • 示例:
      ```javascript
      // 使用闭包创建计数器函数
      var counter = (function() {
      var privateCounter = 0;
      function changeBy(val) {
      privateCounter += val;
      }
      return {
      increment: function() {
      changeBy(1);
      },
      decrement: function() {
      changeBy(-1);
      },
      value: function() {
      return privateCounter;
      }
      };
      })();

    console.log(counter.value()); // 输出 0

    counter.increment();

    console.log(counter.value()); // 输出 1

    counter.decrement();

    console.log(counter.value()); // 输出 0
    ```

以上就是《JavaScript高级程序设计》中关于Function类及闭包的笔记攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript高级程序设计 读书笔记之八 Function类及闭包 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 微信小程序表单验证插件WxValidate的二次封装功能(终极版)

    以下是关于“微信小程序表单验证插件WxValidate的二次封装功能(终极版)”的详细攻略。 什么是WxValidate? WxValidate是一款轻巧的微信小程序表单验证插件。在微信小程序开发中,表单验证是非常重要的,例如在登录、注册、填写个人信息等场景和功能中都需要用到表单验证。WxValidate提供了便捷的表单验证解决方案。它支持表单验证规则的自定…

    JavaScript 2023年6月10日
    00
  • JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)

    下面是详细的讲解。 概述 在前端开发中,我们经常需要对数据进行加密传输或者解密处理,其中Base64编码算法是一种经常被使用的编码方式。本文将讲解如何使用JavaScript实现Base64编解码的实现方法,并附带实例代码。 Base64编码原理 Base64是一种常用的编码算法,可以将数据进行编码,常用于传输数据或者在文本中嵌入非ASCII字符。Base6…

    JavaScript 2023年5月20日
    00
  • JavaScript版DateAdd和DateDiff函数代码

    下面是详细讲解“JavaScript版DateAdd和DateDiff函数代码”的完整攻略: 一、概述 在Web开发中,常常需要对日期进行操作。但是JavaScript原生的Date对象提供的方法较少,因此我们可以自己编写DateAdd和DateDiff函数来方便地进行日期计算。 DateAdd函数用于计算某个日期加上一定时间单位后的日期值,而DateDif…

    JavaScript 2023年5月27日
    00
  • js对象的读取速度实例详解

    关于“js对象的读取速度实例详解”,我会给出完整的攻略,以下是具体的内容: 1. 什么是js对象 JS对象是指在JS中可以通过{}或者new Object()定义出的对象,它是一个无序属性的集合,每个属性都是由属性名和属性值所组成。其中,属性名可以是字符串或者Symbol类型,属性值可以是任何JS数据类型。 2. js对象的读取速度 在JS编程中,对象的读取…

    JavaScript 2023年6月10日
    00
  • 解决js函数闭包内存泄露问题的办法

    JS函数闭包内存泄露指在函数内部使用了外部定义的变量,并把该函数作为变量的返回值时,这个函数的作用域链会把外部函数的活动对象引用计数加1,导致闭包函数中的所有变量都无法被垃圾回收机制回收,造成内存泄露。 下面介绍两种解决JS函数闭包内存泄露问题的办法。 方法一: 及时释放引用 在函数内部定义变量时,可以使用let或const关键字替代var来声明变量,因为l…

    JavaScript 2023年6月10日
    00
  • JavaScript中Iterator迭代器接口和循环

    JavaScript中的Iterator迭代器接口是用于实现遍历数据集合的一个标准接口,它可以遍历各种数据结构(包括数组、集合、字典等),并且提供了一种通用的方法来访问和操作这些数据结构中的个体元素。在JavaScript语言中,Iterator迭代器接口是一个非常重要的编程工具,它可以方便地实现循环遍历数据结构的过程。 Iterator迭代器接口的实现 I…

    JavaScript 2023年5月27日
    00
  • JavaScript数组reduce()方法

    我们来详细讲解一下JavaScript数组reduce()方法的完整攻略。 简介 reduce() 方法是JavaScript数组的一个非常强大的方法,它可以将一个数组中的所有元素依次执行一个回调函数,并将最终结果返回。在实际应用中,这个方法非常多样化,能够应用于各种情景。 基本语法 reduce() 方法的基本语法如下: array.reduce(func…

    JavaScript 2023年5月18日
    00
  • JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享

    JavaScript 中函数参数的传递方式既有值传递(by value),也有引用传递(by reference)。 值传递 函数参数以基本数据类型(如Number、String、Boolean等)为例,是以值传递的方式进行的。值传递表示将实际传递给函数的参数值(即实参)复制一份,传递给函数中对应的参数(即形参),函数中对参数值的修改不会影响到实参的值 下面…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部