gistfile1.txt /*** 闭包*/function outter(){var m = 100;var n = 1;return function(){return m;}}function outter1(age){var m = 3;return{name:m,age:age};}var o = outter1(20);var o = outter1(30);console.log(o.name);//避免内存泄露的方法
/** * 闭包 */ function outter(){ var m = 100; var n = 1; return function(){ return m; } } function outter1(age){ var m = 3; return{name:m,age:age}; } var o = outter1(20); var o = outter1(30); console.log(o.name); //避免内存泄露的方法 new WeakSet.add(outter()); var c = outter(); var x = c(); console.log(x); /* 闭包计数器 */ function counter(m){ return function(){ return ++m; } } var c1 = counter(0); var c2 = counter(3); for(var i=0;i<10;i++){ console.log("c1..."+c1()); console.log("c2..."+c2()); } /* 比较器 */ var o1={id:2,name:"evan"}; var o2={id:8,name:"alice"}; var o3={id:1,name:"eric"}; function createCompareisionFactory(propertyName){ return function(o1,o2){ return o1[propertyName]>o2[propertyName]?1:o1[propertyName]==o2[propertyName]?0:-1; } } var idComparator = createCompareisionFactory("id"); var nameComparator = createCompareisionFactory("name"); var m = idComparator(o1,o2); var m1 = nameComparator(o1,o2); console.log(m1); var os = [o1,o2,o3]; os.sort(idComparator); console.log(os); /* 陷阱 */ //陷阱写法 输出所有都是10 // function fnFactory(){ // var fns=[]; // for (var i = 0; i < 10; i++) { // fns[i]=function(){return i;} // } // return fns; // } //输出1到10 function fnFactory(){ var fns = []; for(var i=0;i<10;i++){ fns[i] = function(x){ return function(){ return x; } }(i); } return fns; } var fs = fnFactory(); for(var i=0;i