標籤:oct 情況 zhang pre 工具類 javascrip utf-8 最好 常用
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>javascript進階文法1-函數</title> 6 </head> 7 <body> 8 <script> 9 function print(p){ 10 console.log(p.toString(),p) 11 } 12 /* 13 var arr= new Array(); 14 arr.push(1); 15 arr.push(2); 16 arr.push(3); 17 arr.push(4); 18 print(arr); 19 print(arr.join(":")) 20 var arr2 = [5,6,7,8] 21 print(arr.concat(arr2)) 22 //each() 擴充函數的方法 23 Array.each = function(array,fn){ 24 for(var i=0;i<array.length;i++){ 25 fn(array[i]); 26 } 27 } 28 Array.each(arr,function(v){ 29 print(v); 30 }) 31 32 //回呼函數定義 33 function add(x,y,fn){ 34 this.x=x||1; 35 this.y=y||1; 36 if(fn){ 37 fn(this.x + this.y); 38 } 39 } 40 41 add(3,5,function(v){ 42 if(v>5){ 43 alert("res >5") 44 }else{ 45 alert(res <=5"") 46 } 47 }) 48 49 50 //函數傳參 51 //1.參數傳遞隨意性(可以少傳或多傳參數) 52 function add(x,y,z){ 53 this.x = x||0; 54 this.y = y||0; 55 this.z = z||0; 56 alert(this.x+this.y+this.z); 57 } 58 59 60 add(12,3,4,5); 61 //弊端:無法像java等進階語言那樣有函數精確複寫的特性。 62 //技巧:如果你這個類是工具類的情況下,那麼接收的參數最好是對象。 63 //conf={gridName:"",gridCode:"",gridSize:""} 64 function gridUtil(conf){ 65 alert(conf["gridName"]+conf["gridSize"]); 66 } 67 gridUtil({gridName:"zhangsan",gridSize:"20"}) 68 69 //傳值還是傳地址 70 var i = 100; 71 var s = "one"; 72 function add3(i,s){ 73 i++; 74 s+="--" 75 } 76 add3(); 77 alert(i); 78 alert(s); //證明基礎變數傳遞數值。 79 80 var o = {name:"zhangdan"}; 81 function change(o){ 82 o["name"] = "javascript"; 83 } 84 change(o); 85 alert(o.name); //證明自訂對象傳參方式傳的是地址。 86 87 88 //函數遞迴 89 function add4(start,end){ 90 var num= 0; 91 num += start; 92 if(start<end){ 93 num += add4(start+1,end); 94 } 95 return num 96 } 97 alert(add4(1,100)); 98 99 100 //代理函數--》 用程式來決定返回的新的函數(生產函數的函數)101 //類比資料庫102 var person = {"jim":‘m‘,"lili":"w"}103 var test = function(name){104 if(person[name]=="m"){105 return function(nk,wk){106 alert(nk+" "+wk);107 }108 }else if(person[name]=="w"){109 return function(nk,wk,fk){110 alert(nk+" "+wk+" "+fk);111 }112 }113 }114 test("jim")("ok","ok");115 test("lili")("ok","ok","no");116 //前端代碼不常用,會使代碼複雜化。架構常用。117 118 */ 119 120 //eval()函數 --》把一個字串解析成一個函數並執行121 var str = "var show = function(){alert(100)}()";122 eval(str);123 // 應用情境:資料庫有時候會返回一個字串(長得像js數組);124 var a = "[1,2,3]";125 var arr = eval(a);126 for(var i = 0;i<arr.length;i++){127 console.log(arr[i]);128 }129 130 131 </script>132 </body>133 </html>
JavaScript設計模式-1.函數