珠峰培训

js中的定定时器与函数

作者:

2016-07-17 23:50:05

167

1.定时器

  1. window.setInterval([function],[interval]); 每隔一段时间执行一次

  2. window.setTimeout([function],[interval]); 隔一段时间仅执行一次

  3. clearInterval(); clearTimeout(); 清除定时器

  4. 定时器的返回值是一个数字,代表这是第几个定时器

var interval = 10,n=0;
var timer = window.setInterval(function(){
n++;
if(n > 10){
window.clearInterval(timer);
}
},interval);

2.深入函数数据类型

  • JS在预解析时将变量或函数预解析到它们能调用的环境(变量运行时环境)中,并且预解析发生在当前 作用域下的

  • 变量和函数进行预解析时是不一样的,变量只是提前声明了,而函数是提前声明和定义都完成了

  • 函数执行可以写在任何位置,因为定义的这个操作在预解析时已完成了

  • 函数执行时会形成一个新的私有作用域(栈内存),首先进行的是预解析,其次代码执行

  • 函数执行一次就形成一个新的私有作用域,执行完成之后,当前的私有作用域会销毁

3.栈内存和堆内存

3.1 栈内存

刚开始加载页面时浏览器会自带一个js的执行环境,这个环境也叫做“栈内存”,也叫作用域

栈内存(作用域)存储的是基本数据类型,代码从上至下执行

3.2 堆内存

引用数据类型会先开辟一段内存空间,把属性名和属性值都存起来,叫做“堆内存”

3.3 内存的销毁

当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁了。

  • 所有在方法中定义的变量都是放在栈内存中的;

  • 因为对象的创建成本通常较大,堆内存中的对象不会随方法的结束而销毁,为的是能够反复利用;

  • 即使方法结束后,这个对象还可能被另一个引用变量所引用(方法的参数传递时很常见),则这个对象依然不会被销毁;

  • 只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会在核实的时候回收它。

  • 因为与垃圾回收机制有关,栈内存和堆内存的作用都是为了使程序运行时占用的内存最小。