资讯专栏INFORMATION COLUMN

简简单单认识变量的作用域以及闭包

未东兴 / 354人阅读

摘要:变量的作用域以及闭包变量的作用域就是你定义的变量可以使用的代码范围全局变量局部变量全局变量全局变量,顾名思义,就是在全局都能够使用的变量。局部变量局部变量,只在函数执行时生成的调用对象中存在,在函数执行完毕时局部变量即刻销毁。

变量的作用域以及闭包 变量的作用域

就是你定义的变量可以使用的代码范围

全局变量

局部变量

全局变量

全局变量,顾名思义,就是在全局都能够使用的变量。在浏览器解析js代码时,会在内存中开辟出一块空间来存储变量,在函数需要使用时,可以直接从内存中调用。

局部变量

局部变量,只在函数执行时生成的调用对象中存在,在函数执行完毕时局部变量即刻销毁。因此在程序设计中我们需要考虑如何合理声明变量,这样既减小了不必要的内存开销,同时能很大程度地避免变量重复定义而覆盖先前定义的变量所造成的Debug麻烦。

举例说明
var a = 1;
console.log(a);

打印得到1.
var a = 1;
function example(){
    console.log(a);
}

打印得到1.
function example(){
var b = 2;
console.log(b);
}
example();

打印得到2.
function example(){
var b = 2;
}
console.log(b);
example();

打印报错 b is not defined
闭包

闭包就是能够读取其他函数内部变量的函数。由于在javascript中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理解成“定义在一个函数内部的函数。所以,在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

function example (){
    var b = 2;
    return function (){
        b++;
        console.log(b);
    }
}
var example1 = example();
example1();

打印得到3.

当我们在打印console.log(example1)的时候,我们会发现打印出来的是example内部的函数

console.log(example1);

打印得到:
ƒ (){
    b++;
    console.log(b);
}
自执行函数 第一种格式
(function(){

})()
第二种格式
(function(){

}())

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87339.html

相关文章

  • 从这两套题,重新认识JSthis、作用闭包、对象

    摘要:也就是说,普通情况下,指向调用函数时的对象。在全局执行时,则是全局对象。故而的方法因为构造函数闭包的关系,指向了构造函数作用域内的。 日常开发中,我们经常用到this。例如用Jquery绑定事件时,this指向触发事件的DOM元素;编写Vue、React组件时,this指向组件本身。对于新手来说,常会用一种意会的感觉去判断this的指向。以至于当遇到复杂的函数调用时,就分不清this的...

    罗志环 评论0 收藏0
  • 由两道题扩展作用,作用链,闭包,立即执行函数,匿名函数认识总结

    摘要:前言最近在学前几天看到两道题刚开始看懵懵懂懂这几天通过各种查资料慢慢的理解顿悟了对匿名函数闭包立即执行函数的理解也更深了一点在此分享给大家我的理解与总结希望能帮助大家理解因为这篇文章是我用心总结的查阅了很多的资料所以总结的比较细篇幅较长如果 前言 最近在学JS,前几天看到两道题,刚开始看懵懵懂懂,这几天通过各种查资料,慢慢的理解,顿悟了,对匿名函数,闭包,立即执行函数的理解也更深了一点...

    piapia 评论0 收藏0
  • Js基础知识(三) - 作用闭包

    摘要:是词法作用域工作模式。使用可以将变量绑定在所在的任意作用域中通常是内部,也就是说为其声明的变量隐式的劫持了所在的块级作用域。 作用域与闭包 如何用js创建10个button标签,点击每个按钮时打印按钮对应的序号? 看到上述问题,如果你能看出来这个问题实质上是考对作用域的理解,那么恭喜你,这篇文章你可以不用看了,说明你对作用域已经理解的很透彻了,但是如果你看不出来这是一道考作用域的题目,...

    lemanli 评论0 收藏0
  • Js基础知识(三) - 作用闭包

    摘要:是词法作用域工作模式。使用可以将变量绑定在所在的任意作用域中通常是内部,也就是说为其声明的变量隐式的劫持了所在的块级作用域。 作用域与闭包 如何用js创建10个button标签,点击每个按钮时打印按钮对应的序号? 看到上述问题,如果你能看出来这个问题实质上是考对作用域的理解,那么恭喜你,这篇文章你可以不用看了,说明你对作用域已经理解的很透彻了,但是如果你看不出来这是一道考作用域的题目,...

    XFLY 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<