标签:hang count col pre 一个 console 参数 dex test
// 1.返回值 最常用的一种形式是函数作为返回值被返回 function test(){ var a=100; return function(){ return a; } } var act=test()(); console.log(act); // 2.函数赋值 一种变形的形式是将内部函数赋值给一个外部变量 var act; function test1(){ var a=100; function b(){ return a; } act=b; } test1(); console.log(act()); // 3.函数参数 闭包可以通过函数参数传递函数的形式来实现 var change=function(fn){ console.log(fn()); }; function test2(){ var a=100; function b(){ return a; } change(b); } test2(); // 4.IIFE var change2=function(fn){ console.log(fn()); }; (function(){ var a=100; function b(){ return a; } change2(b); })() // 5.循环赋值 // wrong1 var arr=[]; for(var i=0,j=2;i<j;i++){ arr[i]=function(){ return i; } } console.log(arr[0]()); // right1 var arr=[]; for(var i=0,j=2;i<j;i++){ arr[i]=(function(m){ return function(){ return m; } })(i) } console.log(arr[0]()); // wrong2 function foo(){ var arr = []; for(var i = 0; i < 2; i++){ arr[i] = function(){ return i; } } return arr; } var bar = foo(); console.log(bar[0]());//2 // right2 function foo(){ var arr = []; for(var i = 0; i < 2; i++){ arr[i] = (function(j){ return function(){ return j; } })(i); } return arr; } console.log(foo()[0]());//0 console.log(foo()[1]());//1 // 6.get set 控制变量 var get,set; (function(){ var a=100; get=function(){ return a; } set=function(b){ a=b; } })() console.log(get()); set(200); console.log(get()); // 7.迭代器 var count=(function(){ var a=100; return function(){ return ++a; } })() console.log(count()); console.log(count()); function setup(x){ var i = 0; return function(){ return x[i++]; } } var next = setup([‘a‘,‘b‘,‘c‘]); console.log(next());//‘a‘ console.log(next());//‘b‘ console.log(next());//‘c‘ // 8.区分首次 var firstTime=(function(){ var arr=[]; return function(m){ if (arr.indexOf(m)<0) { arr.push(m); return true; }else{ return false; }; } })() console.log(firstTime(10)); console.log(firstTime(10)); console.log(firstTime(10)); console.log(firstTime(20)); console.log(firstTime(20));
标签:hang count col pre 一个 console 参数 dex test
原文地址:https://www.cnblogs.com/justSmile2/p/9916942.html