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>