4.垃圾收集器
这个基本上java中的垃圾回收机制差不多,当JS的解释器发现这个变量不再有用的时候,就会释放掉这变量所占用的内存。
5.全局对象(global object)与局部对象(call object)
js解释器会在任何JS代码执行前,隐式创建一个全局对象,其中包含了一切有可能在后续使用到的隐式声明的变量。例如:Math parseInt等。
某一个函数执行前,也会创建一个局部对象用于存储局部变量。以防止同名的全局变量覆盖了局部变量的值。
对象中的属性和变量 ,这两个概念在JS中毫无区别。
6.执行环境(上下文)(execution context)
每次当javascript解释器开始执行一个函数后,它为函数创建一个新的执行环境。
7.作用域连(scope chain)
每个执行环境都有一个自己的作用域连。作用域连是一个对象列表,当JS查找变量时,查找顺序为自底向上。如果是最外层的代码,则他的作用域连上只有一个全局对象。如果是最外层的函数,则其作用域连上有2个对象,先是局部对象(包含局部变量和参数),然后是全局对象。内层嵌套的函数,则有3个对象,第一个是自身的局部对象,第二个是外层函数的局部对象,最后才是全局对象。由于这个机制,所以代码可以访问到外围的变量,不能访问到内部嵌套的变量。
这也是局部变量的效用性比全局变量强的原因,因为首先查找到的就是局部变量。
这个基本上java中的垃圾回收机制差不多,当JS的解释器发现这个变量不再有用的时候,就会释放掉这变量所占用的内存。
5.全局对象(global object)与局部对象(call object)
js解释器会在任何JS代码执行前,隐式创建一个全局对象,其中包含了一切有可能在后续使用到的隐式声明的变量。例如:Math parseInt等。
某一个函数执行前,也会创建一个局部对象用于存储局部变量。以防止同名的全局变量覆盖了局部变量的值。
对象中的属性和变量 ,这两个概念在JS中毫无区别。
6.执行环境(上下文)(execution context)
每次当javascript解释器开始执行一个函数后,它为函数创建一个新的执行环境。
7.作用域连(scope chain)
每个执行环境都有一个自己的作用域连。作用域连是一个对象列表,当JS查找变量时,查找顺序为自底向上。如果是最外层的代码,则他的作用域连上只有一个全局对象。如果是最外层的函数,则其作用域连上有2个对象,先是局部对象(包含局部变量和参数),然后是全局对象。内层嵌套的函数,则有3个对象,第一个是自身的局部对象,第二个是外层函数的局部对象,最后才是全局对象。由于这个机制,所以代码可以访问到外围的变量,不能访问到内部嵌套的变量。
这也是局部变量的效用性比全局变量强的原因,因为首先查找到的就是局部变量。