`
psy_yd
  • 浏览: 23185 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • henchong: 我想实现这个功能。。。控制地图的显示范围。。但不知道地图的级别 ...
    地图实现原理

闭包(变量作用域JS)

    博客分类:
  • JS
阅读更多
我对Javascript闭包的理解



var tmd = function(){//这里我们叫做"匿名函数1"

    var tmdNum = 0;

    return function(){//这里我们叫做"匿名函数2”

        //在这儿你可以随便写你想些的代码,我无所谓。

         tmdNum ++;

         alert(tmdNum);

    }





}(); //千万要注意这里的这个小括号。

这段代码什么意思呢?

第一步:先把函数里面的内容都删了,看总体的结构

var tmd = function(){}();

这行代码的意思是 先声明一个变量,变量的名字叫做tmd。

function(){} 这是声明了一个匿名函数

function(){}(); 加个括号的意思是让这个匿名函数立即执行。

所以,tmd的值就是这个匿名函数的返回值。如果这个函数什么也不返回,tmd的值就是undefined。



第二步:看匿名函数里面的内容

匿名函数里面有做了两件事情

一是定义了一个变量tmdNum,并赋初值为0;

二是执行一个return,return function(){} 表示返回的是一个函数。这个函数的函数体执行的步骤跟我们文章一开始写的那个tmd函数的执行步骤是一样的。



结果:我们折腾了这么一大圈,达到的目的是什么呢。首先,匿名函数1 return了一个函数(匿名函数2)赋给了tmd变量。这样调用tmd(),实际调用的就是匿名函数2。因为tmdNum这个变量只能被匿名函数2调用,所以最终的效果就是tmdNum这个变量只能在tmd()调用的时候改变。
分享到:
评论

相关推荐

    深入理解变量作用域

    本文将从JavaScript权威指南出发,深入探讨变量作用域的相关知识点,包括全局作用域、局部作用域、以及闭包等高级概念。 #### 二、全局作用域与局部作用域 1. **全局作用域** - 定义:在JavaScript中,如果一个...

    基于JavaScript的变量作用域的辨析.pdf

    基于JavaScript的变量作用域的辨析 本文探讨了JavaScript中的变量作用域问题,通过对两种变量的特性从不同角度进行分析和测试,讨论了如何控制变量作用域的有效方法。 变量作用域是JavaScript编程过程中经常遇到的...

    JavaScript程序设计变量作用域共4页.pdf.zi

    本文将深入探讨JavaScript中的变量作用域,以及它如何影响代码的运行和组织。 首先,我们来理解什么是变量作用域。在JavaScript中,变量作用域决定了变量在何处可以被访问和识别。主要有三种类型的作用域:全局作用...

    JS的作用域与闭包

    ### JS的作用域与闭包 #### 一、作用域的基础概念 作用域是JavaScript中一个非常核心的概念,它定义了变量的可见性和生命周期。在学习作用域之前,我们需要先了解几个基本概念: - **变量**: 在JavaScript中,...

    闭包作用域

    在JavaScript中,闭包(Closure)是一个非常重要的概念,它允许一个函数访问并操作其外部作用域中的变量,即使该函数在其外部作用域之外被调用。这种特性使得闭包成为一种强大的工具,能够实现诸如数据封装、私有...

    JavaScript闭包与作用域链实例分析

    本文实例讲述了JavaScript闭包与作用域链。分享给大家供大家参考,具体如下: 闭包定义 闭包指的是有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数A内部创建另一个函数B,那么函数B...

    javascript 闭包、匿名函数、作用域链

    JavaScript中的闭包、匿名函数和作用域链是编程中至关重要的概念,它们是理解JavaScript运行机制的关键。在本文中,我们将深入探讨这三个概念,并通过实际示例来展示它们的运用。 首先,我们来讨论“闭包”。闭包是...

    js代码-闭包与作用域,经典题

    在JavaScript中,作用域定义了变量的可见性和生命周期,而闭包则是一种特殊的内部函数,它可以访问并操作外部函数的变量,即使外部函数已经执行完毕。 **作用域** 1. **全局作用域**:在所有函数外部定义的变量...

    10-作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?_For_vip_user_0011

    "作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?" 标题“作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?”中,我们可以看到JavaScript引擎是如何选择相同的变量的。...

    第四章示例代码__对象的作用域

    6. **闭包作用域**:在函数内部定义的函数(闭包)可以访问其外部函数的变量,即使外部函数已经执行完毕。这种特性在JavaScript等语言中常见,有助于实现数据隐藏和封装。 了解对象的作用域对于编写高效、安全的...

    js闭包的理解以及作用.docx

    JavaScript中的闭包是一种高级编程概念,它涉及到函数和作用域的相互作用,使得函数能够访问并操作其外部作用域中的变量,即使在其外部作用域已经结束之后。闭包是JavaScript中实现数据隐藏和封装的一种重要手段,...

    JavaScript使用闭包模仿块级作用域操作示例

    JavaScript中的闭包是一种强大的特性,它允许函数访问和修改外部函数的作用域中的变量,即使外部函数已经执行完毕。由于JavaScript不支持块级作用域(如C++或Java中的`{}`),开发者通常利用闭包来模拟块级作用域的...

    JavaScript 变量作用域及闭包第1/2页

    JavaScript中的变量作用域和闭包是其核心特性之一,它们对程序的设计和运行方式有着深远的影响。首先,我们来看看变量作用域。在JavaScript中,作用域决定了变量和函数的可访问性。变量作用域的划分主要有两种:全局...

    005课-继承作用域闭包.rar

    2. **作用域的详解**:解释不同类型的变量作用域,如全局作用域、局部作用域和块级作用域,并通过实例展示作用域规则。 3. **闭包的原理**:解释什么是闭包,如何创建闭包,以及闭包如何保持对外部变量的引用。 4....

    深入理解JavaScript作用域和作用域链

    JavaScript作用域是编程中至关重要的...在实际编程中,我们还会遇到闭包、块级作用域(ES6中的`let`和`const`)等更高级的概念,这些都是基于作用域链的扩展,理解它们对于成为精通JavaScript的开发者来说必不可少。

    js代码-闭包隐藏变量

    JavaScript中的闭包是一种强大的特性,它允许函数访问并操作其外部作用域的变量,即使在函数执行完毕后这些变量仍然存在。这个特性使得闭包在处理数据隐私、模块化和记忆化等方面非常有用。让我们深入探讨一下闭包的...

    3.8 函数参数与变量的作用域(ppt).zip

    变量作用域决定了变量在何处可以被访问。主要有以下几种类型的作用域: 1. **全局作用域**:在所有函数外部定义的变量拥有全局作用域,它们在整个程序中都可访问。例如: ```python x = 10 def print_x(): print...

    JavaScript 中的闭包是指内部函数可以访问外部函数作用域中的变量

    在JavaScript中,闭包(Closure)是一个极其关键的概念,它使得内部函数能够访问到其外部函数的作用域内的变量,即使外部函数已经执行完毕。这一特性是基于JavaScript的函数作用域规则以及函数本身可以作为值进行...

Global site tag (gtag.js) - Google Analytics