zoukankan      html  css  js  c++  java
  • JavaScript设计模式-1.函数

      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>
  • 相关阅读:
    中国大学排名爬虫
    基于bs4库的HTML内容查找方法和HTML格式化和编码
    自动化提取51啦数据的信息
    简单目录扫描工具
    一个简单音乐播放器
    【原创】C++中对象的序列化
    [android]android开发中的运行错误之:adb.exe
    [转载]十大编程算法助程序员走上高手之路
    [原创]二叉树相关笔试题代码
    [原创]VS2010中创建动态链接库及其调用
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/7191729.html
Copyright © 2011-2022 走看看