原文:你不知道的js系列 在第(二)节中提到的,标识符在作用域中声明,这些作用域就像是一个容器,一个嵌套一个,这个嵌套关系是在代码编写时定义的. 那么到底是什么产生了一个新的作用域,只有函数能做到吗?JavaScript 的其它代码结构能否创建一个作用域呢? 函数作用域 观察下面的代码: function foo(a) { var b = 2; // some code function bar() { // ... } // more code var c = 3; } 在这段代码中,fo
垃圾回收: JavaScript中,开发者不必关心内存分配和回收的问题.这和Java语言相似.有一个垃圾自己主动回收机制.那么JavaScript内部到底是如何回收垃圾的呢? 使用标记回收法:就是说.离开作用域的值将被自己主动标记为能够回收.因此将在垃圾收集期间被删除. 标记删除是当前主流的垃圾收集算法,这样的算法的思想是给当前不使用的值加上标记,然后回收期内存. 关于作用域的知识,大家有须要能够再搜集一下资料学习,这里就不具体叙述了. 打个例如: function test(){ var co
JavaScript没有块级作用域.在其他语言上,比如C语言中,有花括号封闭的代码块都有自己的作用域,(如果用ECMAScript的话来讲,就是他们自己的执行环境),因而支持根据条件来定义变量.例如,下面的代码效果 if (true) { var color = "blue"; } alert(color);//blue 这里是一个if语句中定义了一个变量color,如果是在C,C++或者Java中,color会在if执行后被销毁.但是在JavaScript中,if语句中的变量声明会