美文网首页
JS作用域与闭包

JS作用域与闭包

作者: 仙姑本姑 | 来源:发表于2019-12-09 15:19 被阅读0次
1.全局变量:声明在函数外部的变量(所有没有var直接赋值的变量都属于全局变量)
2.局部变量:声明在函数内部的变量(所有没有var直接赋值的变量都属于全局变量)
JS中变量申明分显式申明和隐式申明
var i=100;//显式申明 
i=100;//隐式申明

在函数中使用var关键字进行显式申明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。

当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量

全局作用域&全局变量

全局变量在整个上下文都有效,只是在没有赋值之前调用,会输出undefind

<script type="text/javascript">  

alert(c);//输出undefind  

// alert(d);报错错  

     var c=3;  

     function test(){  

         var a=1;  

         b=2;  

        alert(c)//输出三  

 }  
 alert(c);//输出3  
 test();  
 </script>  

函数作用域&局部变量

函数作用域是针对局部变量来说的,在函数中定义的变量在函数外不能获取

function test(){  
         alert(a);//声明未赋值输出undefine  
         var a=1;  
         alert(a);//1  
     }  
// alert(a);报错,外部获取不到  

 test();  
//alert(a);保存不能输出  

闭包

闭包时作用域链的特殊应用的产物,特殊就特殊在闭包所指向的作用域与函数在定义时对应的作用域不同

用一句话概括闭包的形式即:函数b嵌套在函数a内部,函数a返回函数b

function a () {
            var x = 0;
            function b () {
                x++
                return x
            }
            return b()
        }
        console.log(a()) // 1

出现闭包的原因是,有时候根据逻辑需要,我们要在父级作用域中使用局部变量,而闭包就恰好解决了这个问题。另一方面使用闭包获得的局部变量不会在局部作用域失效后就被清除。而是被保留下来。这是把双刃剑,而它的缺点就是滥用闭包很容易造成“循环使用”以至于导致内存泄漏。

原文链接:https://blog.csdn.net/limu693992297/article/details/51576852

相关文章

  • 你不懂JS:作用域与闭包

    你不懂JS:作用域与闭包 第五章:作用域闭包 希望我们是带着对作用域工作方式的健全,坚实的理解来到这里的。 我们将...

  • js闭包的理解

    什么是闭包 通俗的来讲,个人觉得闭包就是延长变量作用域的函数。众所周知js的作用域分为全局作用域和链式作用域。在函...

  • Javascript 闭包

    如果要了解闭包,我们需要先了解闭包的由来,闭包的产生,源于JS的词法作用域 词法作用域 作用域是指一个 变量能够访...

  • js 闭包

    一、js 作用域 讲闭包首先就要理解 js 的作用域。再 ES5 中,js 有两种作用域,全局作用域和函数作用域(...

  • 2.Dart面向对象

    函数 命名可选参数{} 位置可选参数[] 作用域定义:与js的作用域一致,层层向上找。 Dart函数闭包 js函数...

  • JS 闭包(Closure)

    参考阮一峰老师的JS 闭包 理解闭包前需要理解变量作用域、变量提升 JS作用域 那如何让它依次打印,12345呢;...

  • js闭包详解

    1.什么是闭包? 要了解什么是闭包,首先你要了解作用域。 js的作用域分两种,全局作用域和局部作用域。 我们知道在...

  • 作用域和闭包

    目录 概述 作用域编译过程词法作用域全局作用域函数作用域 闭包循环和闭包闭包的用途性能 总结 概述 作用域和闭包一...

  • 14.JS基础之作用域与闭包

    作用域: 全局作用域 函数作用域 块级作用域(ES6新增) 常见的闭包有:作为函数返回值的闭包与作为函数参数的闭包...

  • 学习JavaScript闭包和作用域笔记

    JS JavaScript闭包和作用域 闭包 JavaScript高级程序设计中对闭包的定义:闭包是指有权访问另外...

网友评论

      本文标题:JS作用域与闭包

      本文链接:https://www.haomeiwen.com/subject/epwbgctx.html