javascript学习笔记(十三) js闭包介绍(转)

yizhihongxing

“JavaScript学习笔记(十三) JavaScript闭包介绍”这篇文章是一篇介绍JavaScript闭包的文章。下面是这篇文章的完整攻略:

JavaScript学习笔记(十三) JavaScript闭包介绍

什么是闭包?

闭包是指函数和函数内部能访问到的变量的总和。也就是说,它指的是一个拥有许多变量和函数的实体。

简单来说,闭包是指在另一个函数内部定义的函数,并且在内部函数中访问了外部函数的变量。这个内部函数就是一个闭包。

闭包的作用

闭包的主要作用是让函数访问其创建时的作用域,即使函数在其原始作用域之外被调用。这种访问机制使得函数可以保存一些变量,从而在每次被调用时都能使用这些变量。

如何创建闭包?

在JavaScript中,闭包是自动创建的,只要在一个函数内部定义了另一个函数,闭包就会自动创建。

下面是一个简单的示例,演示了如何创建闭包:

function outerFunction() {
  var message = 'Hello, world!';

  function innerFunction() {
    alert(message);
  }

  return innerFunction;
}

var myFunc = outerFunction();
myFunc();

在这个示例中,函数outerFunction()内部定义了另一个函数innerFunction(),innerFunction()函数可以访问outerFunction()函数内部的变量message。这种访问机制就是闭包。

当我们在调用outerFunction()函数时,它将返回innerFunction()函数,并将其赋值给变量myFunc。接着,我们调用变量myFunc时,它将执行innerFunction()函数,并弹出一个包含“Hello, world!”消息的警告框。这是因为innerFunction()函数具有访问outerFunction()函数内部变量message的权限,因此可以读取和使用该变量的值。

闭包的例子

下面,我将演示一个更具体的闭包示例。这个示例展示了如何在JavaScript中使用闭包来创建私有变量。

function Person(name) {
  var _name = name;

  this.getName = function() {
    return _name;
  };

  this.setName = function(name) {
    _name = name;
  };
}

var person = new Person('John');
alert(person.getName()); // 输出 'John'
person.setName('Mike');
alert(person.getName()); // 输出 'Mike'

在这个示例中,我们创建了一个构造函数Person(),该函数具有一个私有变量_name。Person()函数还定义了两个公共方法:getName()和setName(),这两个方法分别用于获取和设置_name变量的值。

当我们使用new运算符创建一个新的Person对象时,该对象中的_name变量将被初始化为'name'参数的值(在这个例子中是'John')。此后,我们可以通过调用person.getName()方法获取_name的值,也可以通过调用person.setName()方法将其设置为一个新值。

值得注意的是,_name变量是私有的,因为它只能通过这两个公开方法来访问。这是因为它是在Person()函数内部定义的,并且只能在函数内部访问。由于getName()和setName()方法都是在Person()函数内部定义的,并具有访问__name变量的权限,因此它们可以用于读取和修改_name变量的值,从而实现了一个私有变量。这就是闭包的神奇之处。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript学习笔记(十三) js闭包介绍(转) - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 在Spring Boot中如何使用Cookies详析

    在Spring Boot中,使用Cookie的方法非常简单,只需要使用HttpServletRequest和HttpServletResponse对象即可实现。下面我们来详细讲解如何使用Cookies。 一、什么是Cookies? Cookie是存储在客户端浏览器上的数据,它可以记录用户在访问网站时的一些信息,比如用户的登录状态、购物车中的商品等信息。Coo…

    JavaScript 2023年6月11日
    00
  • 详解小程序之简单登录注册表单验证

    详解小程序之简单登录注册表单验证 登录注册表单验证是小程序开发中非常基础的一部分,它可以确保用户的信息输入的正确性和安全性。本文将从以下几个方面详细讲解如何在小程序中实现简单的登录注册表单验证: 页面搭建 数据绑定 表单提交 表单验证 页面搭建 首先,在小程序中创建一个新页面,该页面包含用户名、密码、重复密码、以及登录和注册两个按钮。具体的代码如下所示: &…

    JavaScript 2023年6月10日
    00
  • Swift的函数式编程详解

    Swift的函数式编程详解 什么是函数式编程 函数式编程(Functional Programming)是一种编程范式,在函数式编程中,函数是一等公民,函数可以作为参数传递给另一个函数,也可以作为返回值返回。函数式编程强调构建无副作用的函数,可变状态(Mutable State)被限制或者禁止,这样可以避免程序因为状态引发的各种问题。 Swift中通过高阶函…

    JavaScript 2023年5月28日
    00
  • JavaScript数据类型及相互间的转换规则

    JavaScript数据类型及相互间的转换规则 在JavaScript中,数据类型可以分为基本数据类型和引用数据类型,其中基本数据类型包括:数字、字符串、布尔值、null、undefined以及symbol(ES6新增),引用数据类型包括:对象、数组、函数等。 基本数据类型 数字 数字类型包括整数和浮点数。JavaScript中所有数字都是浮点数,例如: l…

    JavaScript 2023年5月28日
    00
  • 正则表达式练习器

    正则表达式练习器是一款可以帮助用户练习正则表达式基础知识和技能的在线工具。下面是针对这款工具的完整攻略: 注册和登录 访问正则表达式练习器的网站,点击浏览器页面上方的“注册”按钮,填写注册表单并提交。用户名和密码必须至少包含一个数字和一个大写字母,密码长度至少为8个字符。注册成功后,你可以使用注册的用户名和密码进行登录。 访问正则表达式练习器的网站,点击浏览…

    JavaScript 2023年6月11日
    00
  • JavaScript类型检测之typeof 和 instanceof 的缺陷与优化

    JavaScript类型检测之typeof 和 instanceof 的缺陷与优化 typeof的缺陷 在JavaScript中,typeof操作符用于检测一个变量或表达式的数据类型,返回一个字符串常量。 typeof variable typeof操作符返回的结果只有一下几种: “undefined”: 如果变量没有被赋值或者值为undefined “bo…

    JavaScript 2023年6月10日
    00
  • JavaScript实现H5接金币功能(实例代码)

    JavaScript实现H5接金币功能(实例代码)攻略 1. 理解接金币功能 接金币是一种在H5小游戏中常见的功能,玩家只需要点击页面上的金币图片,即可让自己的金币数量增加。在实现接金币功能时,我们需要实现以下几个步骤: 在页面中添加金币图片 实现点击金币图片后,金币数量增加的功能 将金币数量保存到本地,以便下次打开游戏时可以恢复之前的金币数量 2. 实现接…

    JavaScript 2023年6月11日
    00
  • 使用cookie绕过验证码登录的实现代码

    首先,在介绍使用cookie绕过验证码登录的实现前,有必要了解一下什么是cookie。 什么是cookie 在前后端分离的web应用中,一般使用cookie来维持用户的登陆状态,如购物车、身份认证、页面交互等。cookie是一种储存在用户浏览器中的小型文本文件,通常包含一些用于搜索查询、网站记住用户信息、统计网站访问数量和收集访客习惯数据等等。具体实现方式是…

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