`
jinhonglin001
  • 浏览: 15113 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

js闭包的学习(一)

 
阅读更多

         学习js就无法避免的要学习到闭包这个概念,而学习闭包之前理解好作用域和作用域链是很有帮助的。

         作用域:

         对于变量的作用域每个人都不会陌生,而根据作用域则有了所谓的全局变量和局部变量。

下面是一段代码:

function test (value) {
       var i = 0 ;
       if ( typeof (value) == "number"){
             var j = 0 ;
              for (var k = 0 ; k < 10 ; k++ ) {
                           console.log(k);
                           }
             console.log(k)
}
console.log(j)
console.log(i)
}

他们的输出是什么样子呢

第一个k的输出 是数字 0 ~ 9 
第二个k的输出  是 10
j输出是  undefined 
i输出是  0 

   js的函数作用域是指在函数内声明的所有变量在函数体内是始终可见的,让我感觉好玩的是,js里变量在声明之前已经可用,这种特性在js里称为声明提前,也就是在js函数里声明的所有变量都被提前到函数体的顶部,

例:

var value = " all"
function test () {
     console.log(value);
     var value = "new";
     console.log(value);
}

 输出

可能大家会认为第一个会输出all 其实是undefined
第二个是new

 

由于函数作用域的特性,局部变量在整个函数体始终是有定义的,也就局部变量会覆盖全局变量,,只有执行到var的时候才会被真正赋值。

       作用域链:

       js是一门基于词法作用域的愿,全局变量在整个程序中都是有定义的,而局部变量在她的函数体内及其内部嵌套的函数内都是有定义的,我们可以换个角度来理解作用域,每一段js代码都有一个与之关联的作用域链,作用域链是什么呢,就是一个对象列表或者链表,这组对象定义了了这段代码的作用域中的变量。

     假设我们需要查找一个a的值,就会从程序的作用域链中的第一个对象中查找,如果有,直接调用,如果没有继续查找第二个,如果将作用域链查找完毕,都没有找到,就会抛出引用错误。

作用域链的理解对于之后的闭包概念的理解很重要,接下来再去理解闭包的概念

   

 

 

分享到:
评论

相关推荐

    js闭包学习

    总之,JavaScript的闭包是一种核心概念,理解和掌握闭包对于深入学习JavaScript以及使用jQuery等库进行前端开发至关重要。通过闭包,开发者可以实现更灵活和高效的设计模式,提高代码质量与可维护性。

    js闭包写法学习demo

    以下是一些关于JavaScript闭包的关键知识点: 1. **函数嵌套**:闭包最常见的形式是内部函数引用了外部函数的变量。例如: ```javascript function outerFunction() { var outerVar = 'I am from the outer ...

    JS 闭包的理解

    总之,JavaScript闭包是理解和编写高效、模块化代码的关键概念,它能帮助我们更好地管理作用域、变量和内存,从而提高代码的复用性和可维护性。在日常开发中,熟练掌握闭包不仅可以提升编程技能,也能让代码更加优雅...

    跟我学习javascript的闭包

    JavaScript 闭包究竟是什么? 用JavaScript一年多了,闭包总是让人二丈和尚摸不着头脑。陆陆续续接触了一些闭包的知识,也犯过几次因为不理解闭包导致的错误,一年多了资料也看了一些,但还是不是非常明白,最近偶然...

    [深入理解JS闭包]帮助你快速学习js的闭包,简单高效的文档资源

    JavaScript 闭包是一种强大的特性,它允许函数访问和操作其外部作用域的变量,即使在其外部函数执行完毕后,闭包依然能保持对外部变量的访问。闭包的关键在于内部函数能够记住它被创建时的环境,即它可以访问定义在...

    javascript 闭包实例下载

    JavaScript 闭包是一种高级编程概念,它在JavaScript中扮演着至关重要的角色,特别是在函数式编程和模块化设计中。闭包本质上是函数和其能够访问...通过学习这些实例,你将能够更好地掌握JavaScript闭包这一核心概念。

    使用XMLHTTPRequest实现自定义ajax。javascript闭包模式写法。值的学习

    闭包是JavaScript中的一个重要特性,它可以访问并操作函数内部的变量,即使在函数执行完毕后,这些变量依然存在。下面是一个使用闭包模式实现的Ajax函数示例: ```javascript function createAjax() { var xhr = ...

    javascript闭包详解

    ### JavaScript闭包详解 #### 一、什么是闭包? 闭包是JavaScript中一个重要的概念,它涉及函数如何访问外部作用域中的变量。虽然官方定义较为复杂:“闭包是一个拥有许多变量和绑定了这些变量的环境的表达式...

    基于javascript 闭包基础分享

    在JavaScript编程中,闭包是一个核心概念,它允许函数记住并访问所在词法作用域,即使当函数在其词法作用域之外执行时。闭包的特性使得它在JavaScript中既神秘又强大。 首先,我们从闭包的定义谈起。在JavaScript中...

    JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解

    在深入讨论JavaScript闭包之前,首先需要了解JavaScript的变量作用域。在JavaScript中,变量的作用域分为两种:全局变量和局部变量。全局变量是在函数外部定义的变量,可以在JavaScript程序的任何地方被访问。局部...

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

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现

    JavaScript闭包(closure).pdf

    理解并掌握JavaScript闭包是成为专业前端开发者的关键一步。在实际开发中,合理利用闭包可以提高代码的复用性和可维护性,同时也能避免一些常见的编程陷阱。通过深入学习和实践,可以更好地运用闭包这一强大的工具来...

    闭包javascript.pdf

    描述:详细描述JavaScript闭包,适合更进一步了解闭包。 标签:javascript 闭包 从给定的文件信息来看,主要围绕JavaScript中的闭包概念进行深入探讨。闭包是计算机科学中一个重要的概念,特别是在函数式编程语言...

    JavaScript闭包深入理解.pdf

    闭包是JavaScript编程中的一个重要概念,它涉及到函数、作用域、内存管理和变量持久化等多个方面。闭包本质上是一个函数,它能够访问并操作其自身作用域内的变量,即使在函数执行完毕后,这些变量依然保持活性。闭包...

    js闭包学习心得总结

    通过对标题《js闭包学习心得总结》的阅读和理解,我们可以了解到闭包定义、闭包的创建条件以及闭包的应用场景和在实际编码中可能遇到的问题。 闭包定义: 闭包(Closure)是函数和声明该函数的词法环境的组合。这...

    最符合菜鸟的闭包

    闭包是编程语言中的一个重要概念,特别是在JavaScript等函数式编程语言中。对于初学者来说,它可能显得有些抽象,但理解闭包对于提升编程技能至关重要。闭包是一种特殊的作用域,它允许函数访问并操作其外部作用域的...

    JavaScript学习(一)

    JavaScript学习(一) JavaScript是一种广泛应用于网页和网络应用的脚本语言,由 Netscape 的 Brendan Eich 在1995年发明。它主要用于客户端的网页交互,赋予网页动态功能,如响应用户操作、处理数据、与服务器通信...

Global site tag (gtag.js) - Google Analytics