作用域内存的销毁机制

堆内存:只要这个内存没有被任何变量占用,浏览器就会主动销毁他,其他的需要手动销毁```注意以后在做项目的时候遇到一个对象后面不用了,手动清空一下,让他的值赋值成null就可以了;


栈内存(作用域):
全局作用域:关闭浏览器的时候销毁,以后再做项目的时候尽量避免全局变量的使用
私有作用域:相同的函数每一次执行都会形成一个私有作用域,他们之间没有任何关系
1.立即销毁 函数没有返回值的,或者返回的内容没有被占用,那浏览器就会把它销毁
2.暂时不销毁:函数有返回值 返回了一个函数,这个函数接着就执行了,执行完了之后浏览器会抽时间销毁,(具体每个浏览器的机制不同)
3.不销毁:如果函数执行返回一个一个引用数据类型的地址一直被占用着,就不会销毁

function fn1(){
var n=1;
console.log(n++)
}
fn1();
fn1();
fn1();

function fn(){
console.log('销毁')}
fn();
这个函数执行完之后对外面没有什么影响就销毁了

function fn2(){
var n=0;
return function(){
console.log(n++)
  }
}
var f=fn2();

当一个函数私有作用域return返回一个函数时,被外界的变量接収,那这个私有作用域不会销毁

作用域不销毁这个概念主要使用在给元素绑定事件的时候
```
box.oncklick=function(){
var n=0;
console.log(n)
}
var oLis=document.getElementsByclassName("oUl")[0].getElementsByTagName("li");
for(var i=0;i<oLis.length:i++){
oLIs[i].οnclick=(function (){
//作用域中的参数i是私有变量
return function (i){
console.log(i)}
)(i)}这个i传进去的是全局的i

i=0,先让自执行函数执行,形成一个私有作用域,先给参数赋值私有变量 i=0,oLis[0].οnclick= function (){cosole.log(i)}
比如我去点击oLis[1];
把function (){console.log(i)}拿来执行,遇到变量i,不是私有的,我往上找,上一级f1,f1中有私有变量i=1,然后输出i
```

预解释时候不管条件是否成立,都进行预解释,但是函数只声明不定义,代码执行的时候,条件成立的话,先给函数定义

转载于:https://www.cnblogs.com/Jiazexin/p/7080363.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值