`
jinhonglin001
  • 浏览: 14506 次
  • 性别: 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闭包写法学习demo

    js闭包写法学习demo

    js闭包学习

    javaScript无可争议的是如今前台开发最常用的技术,该文档讲解了javaScript中闭包技术,在jquery中大量的使用了该技术,学好可以更好的理解学习jquery。

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

    帮助你快速学习js的闭包,简单高效的文档资源! 一、变量的作用域 二、如何从外部读取局部变量? 三、闭包的概念 四、闭包的用途 五、使用闭包的注意点 六、思考题 JavaScript闭包例子

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

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

    js闭包函数

    学习javascript闭包函数的实用文档,讲解全面、详细。pdf格式,

    学习Javascript闭包

    学习Javascript闭包 putishuxinli.com

    javascript 闭包

    javascript closures leaning,闭包学习

    新手入门js闭包学习过程解析

    主要介绍了新手入门js闭包学习过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    JS闭包是是什么?

    千锋逆战班,Rayson.Jin学习打卡第一天! 今天呢,就给大家介绍一下,什么是JS闭包,以及闭包的特点。 1.什么是闭包? 闭包就是一个“定义在一个函数内部的函数”。 2.生成闭包的条件 闭包的生成有三个必要条件...

    js闭包学习心得总结

    主要介绍了JS闭包的学习心得,以及分析其中遇到的问题,需要的朋友跟着参考下吧。

    继续学习javascript闭包

    主要还是继续学习javascript闭包,理解JavaScript的闭包是迈向高级JS程序员的必经之路,需要的朋友可以参考下

    轻松学习Javascript闭包函数

    主要帮助大家轻松学习掌握Javascript闭包函数,从闭包的含义出发,由浅入深学习Javascript闭包函数,感兴趣的小伙伴们可以参考一下

    JavaScript闭包原理与用法学习笔记

    本文实例讲述了JavaScript闭包原理与用法。分享给大家供大家参考,具体如下: 闭包(Closure) 闭包是一个函数和词法环境的组合,函数声明在这个词法环境中。 词法作用域: 看下面的一个例子: function init() { ...

    轻松学习Javascript闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。这篇文章主要介绍了Javascript闭包,需要的朋友可以参考下

    微信小程序闭包问题引发的JS闭包解决方案

    最近小程序项目中遇到变量访问权限的问题一时间没考虑到闭包,郁闷了,在此感谢@Topqiang给我指点。本文阅读一遍不一定能够理解掌握,需要反复推敲和练习,有疑问欢迎随时在下方评论。   在网上搜索学习关于闭包的...

    JS学习笔记之闭包小案例分析

    本文实例讲述了JS学习笔记之闭包小案例。分享给大家供大家参考,具体如下: 直接上代码 &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8" /&gt; &lt;title&gt;Document&lt;/...

    浅谈js闭包理解

    主要介绍了对js闭包理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Global site tag (gtag.js) - Google Analytics