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

变量的作用域以及闭包

变量的作用域

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

  • 全局变量

  • 局部变量

全局变量

全局变量,顾名思义,就是在全局都能够使用的变量。在浏览器解析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(){

}())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值