日期:2014-05-16 浏览次数:20462 次
?
?要想理解closure,最好是写一些代码,或是看一些例子。Closure提供了封装(encapsulation)
?
function myClosure(){
???? var date = new Date();
????
???? //nested function
???? return function(){
?????????? return date.getMilliseconds();
???? }
}
?
即使是当myClosure中的匿名函数(closure)返回,但是date变量仍然驻留在内存中,而不想普通的函数执行完成后就被garbage collection回收了。这里把myClosure看作是一个容器,而date和nested function被看做是这个容器中的元素。
?
另外一种实现方式:
var myClosure2 = function(){
???? var date = new Date();
???? var myNestedFunc = function(){
?????????? return date.getMilliseconds();
???? }
???? return {// revealing modular pattern
?????????? foo: myNestedFunc
???? }
}
?
var bar = new myClosure2();
console.log(bar.foo());
?
?
定义变量?
?
标准方式定义变量
var? str = “Hello World”;
如果定义多个变量的话,可以采用:
var str1 = ‘hello’,
?????? str2 = ‘world’,
?????? str3 = ‘foo bar’;
?