摘要:
由于JavaScript没有块级作用域的概念。这意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的, 这个函数中定义了一个for循环,而变量i的初始值被设置为0.在Java C++等语言中,变量i只会在for循环的语句块中有定义,循环一旦结束,变量就会被销毁。 在JavaScript中 阅读全文
摘要:
内存泄漏 如果闭包的作用域链中保存着一个HTML元素,那么就意味着该元素将无法被销毁。 而这个闭包则又创建另一个循环引用。由于匿名函数保存了一个对 assignHandler()的活动对象的引用,因此就会导致无法减少 element 的引用数。只要匿名函数存在,element 的引用数至少也是1,因 阅读全文
摘要:
关于this对象 在闭包中使用this对象也可能会导致一些问题。this对象是在运行时基于函数的执行环境绑定的:在全局函数中,this等于window, function createFunction(){ alert(this); }; createFunction(); // window 而当 阅读全文
摘要:
前面几篇文章中提到过,作用域链以及闭包的概念,这里就不一一重复了, 作用域链的这种配置机制引出了一个值得注意副作用,既闭包只能取得包含函数中任何变量的最后一个值。别忘了闭包所保存的是整个变量对象,而不是某个特殊的变量。 function createFunctions(){ var result = 阅读全文