函数可以用对象去记住先前操作的结果,从而能避免无谓的运算,这种优化被称为记忆(Memoization)。JavaScript 的对象和数组要实现这种优化是非常方便的。
文章关键字 ‘闭包’
JavaScript 记忆(Memoization)
2011年06月8日,星期三JavaScript中的闭包(closures)
2010年11月6日,星期六今天有个不明真相的同学跟我说JavaScript很简单,我顿时感到压力很大。曾经我也是这么认为的,直到有一天无意中看了一下JQuery的源码,才发现我根本不懂JavaScript。正如《说说掌握JavaScript语言的思想前提》里所说:
大部分人对JavaScript的高级应用不甚了解,已有的知识架构里会认为JavaScript仅仅是一门脚本语言,其作用是给页面做一些锦上添花的效果,比如表单验证等等。潜意识里也就不会用面向对象的思想去编写JavaScript代码,也很少会去深入了解prototype, context, scope chains, closures等概念。
任何一门语言,无论它多么简单,都不是一天两天就能掌握的,无论是VBScript,还是JavaScript,抑或是其他。才学了几天就说JavaScript很简单,这只能显得你很肤浅。懂得基本的语法,并不等于懂得这门语言。
《JavaScript The Definitive Guide, 5th Edition》里有段话:
Closures are an interesting and powerful technique. Although they are not commonly used in day-to-day JavaScript programming, it is still worth working to understand them. If you understand closures, you understand the scope chain and function call objects, and can truly call yourself an advanced JavaScript programmer.
闭包是一种有趣而强大的技术。虽然它们在日常的JavaScript编程中不经常使用,但是依然值得你去了解它们。如果你理解了闭包、作用域链和函数的call对象,那么你就可以真正自称为高级JavaScript程序员了。