前端學習---閉包、遞迴
阿新 • • 發佈:2018-11-17
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>原型</title> <script> //閉包:能夠讀取其它函式內部變數的函式 //JS 中每一個函式都是一個個體,子元素可以獲取父元素中的資訊,但是父元素不能直接獲取子元素中的資訊。 //關鍵是否引用了外部變數。 window.onload = function(){ //方法一 function a(){ var n = 0; function add(){ n++; console.log(n); }; add(); }; a(); //2 function a1(){ this.n=0; this.add=function(){ this.n++; console.log(this.n); }; }; var a11 = new a1(); a11.add(); //3 function a2(){ var n=0; this.add=function(){ n++; console.log(n); }; }; var a22 = new a2(); a22.add(); //4 function a3(){ var n=0; function add(){ n++; console.log(n); }; return add; }; a3()(); //5 var a4 = (function a44(){ var n=0; function add(){ n++; console.log(n); }; return add; })();//立即執行函式 a4(); //閉包傳參 function f(x){ var i = 0; return function(){ return x[i++]; } }; var abc = f(['a','b','c']); f(); var f=( function (x){ var i = 0; return function(){ return x[i++]; } }(['a','b','c'])); f(); //遞迴 在函式執行過程中呼叫自己 function f(n){ if(n<=1){ return 1; }else{ return n*f(n-1); } }; f(3); $(function(){ //倒計時 //方法一:setInterval var num = 10; setInterval(function(){ if(num>0){ num--; }else{ //...... } },1000); //方法二:遞迴 function f(num){ if(num>0){ setTimeout(function(){ num--; f(num); },1000); }else{ } } }); } </script> </head> <body> </body> </html>