作用域和闭包

**说道作用域,先要说变量了,var let const
1,var是es6之前的变量声明,let和const是es6提出的声明方式
2,var是函数作用域,let和const是块级作用域
3,var和let可以修改的变量值,const是不可修改的常量值
4,var可以重复声明,let和const不可以重复声明

下面展示一些 变量声明和js语句执行

var a = 1,b = 2;
add(a,b);
function add(a,b) {
	return a+b
}

在这里插入图片描述
**说这个就是为了下面说自由变量(储值内存的值),闭包就是为了防止全局的自由变量污染,但是又可以使用的

下面展示一些 闭包。

var a;
function num () {
	var a = 2;
	return () => {console.log(a)}
}
a = 1
let number = num()
number()
//执行结果是2

**因为变量的链接是在声明的时候建立的,而不是在执行的时候,在num()没有调用之前,console中的a的值在储值内存中已经拿到,变量取有个规则是向上查找,父级,祖级,只要找到就不在想上级找,在这个题中,外面的a和num函数中的a分别在变量内存中分配了两个空间,所以在执行的时候你拿到的是2而不是1
**闭包,自由变量,回调函数,作用域,声明拿到而不是执行,这几个地方很关键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值