zoukankan      html  css  js  c++  java
  • js函数的创建

    1.js 函数的创建有几种方式:

    1.1  直接声明

    1.2 创建匿名函数,然后赋值

    1.3 声明函数,然后赋值给变量

    1.4 使用1.3 得到的变量再赋值给变量

    1.5 使用函数对象创建函数

     1 <script>
     2         // 第一种:直接声明函数
     3         function show(a, b) {
     4             return a + b;
     5         }
     6         console.log(show(10, 20));
     7         // 第二种:创建匿名函数,然后把匿名函数赋值给变量,然后就可以通过变量调用函数
     8         var show1 = function(a, b) {
     9             return a + b;
    10         }
    11         console.log(show1(30, 50));
    12         // 第三种:声明一个函数,然后把这个函数赋值给一个变量
    13         var show2 = function show1(a, b) {
    14             return a + b;
    15         }
    16         console.log(show2(301, 200));
    17         // 第四种:把第三种得到的变量中赋值给一个变量
    18         var show2 = function show1(a, b) {
    19             return a + b;
    20         }
    21         var show3 = show2;
    22         console.log(show3(308, 206));
    23         // 第五种:使用函数对象实例化得到函数
    24         var show4 = new Function("a,b", 'return a + b;');
    25         console.log(show4(100, 200));
    26     </script>

    注意第五种函数声明的方式:参数和函数体,都是写在小括号中的

    2.1 关于函数对象Function()的例子:

     1  <script>
     2         function show() {
     3             var arr = [];
     4             arr.push(10);
     5             arr.push(20);
     6             arr.push(30);
     7             return arr.join("");
     8         }
     9         console.log(show());    //102030
    10 
    11         var show = new Function('', 'var arr=[];arr.push(10);arr.push(20);arr.push(30);return arr.join("")');
    12         console.log(show());    //102030
    13  
    14     </script>

    结果:两种方式是一样的,只是函数对象实例化的方式比较少用:

    (备注:在数组arr中添加数据项,然后把数组转化为字符串)

    2.2  完成字符串的拼接:

    1 <script>
    2         var s = '我的名字是:<%name%>,年龄是<%profile.age%>,性别:<%sex%>';
    3         // //完成字符串的拼接
    4         var parse = new Function('str', 'var arr = [];arr.push("我的名字是:");arr.push("<%name%>");arr.push(",年龄是");arr.push("<%proflie.age%>");arr.push(",性别:");arr.push("<%sex%>");return arr.join("");');
    5         var res = parse();
    6         console.log(s);
    7         console.log(res);
    8     </script>

    2.3 函数对象可以在声明的同时,执行函数体本身

    1   <script>
    2         new Function('console.log("hello world!");')();
    3     </script>

     2.4 函数对象调用:

     1  <script>
     2         //拼接字符串之后,把字符串解释出来
     3         var parse = new Function('str', 'var arr = [];arr.push("我的名字是:");arr.push(this.name);arr.push(",年龄是");arr.push(this.profile.age);arr.push(",性别:");arr.push(this.sex);return arr.join("");');
     4         var userInfo = {
     5             name: 'aluoha',
     6             profile: {
     7                 age: 25
     8             },
     9             sex: 'man'
    10         };
    11         console.log(typeof parse);
    12         //调用parse函数,把parse函数里面的this指向userInfo;
    13         // 这里主要是为了改变function parse 的作用域,把this指向userInfo;这样,在函数体中,this.属性  就可以进行替换了
    14         var res = parse.call(userInfo);
    15         console.log(res);
    16     </script>

    运行结果:

     2.5 正则匹配初级:match() 与exec()的差异

     1 <script>
     2         var s = '我的名字是:<%name%>, 年龄是<%age%>,性别:<%sex%>';
     3         /*
     4             <%变量名%>                       // 匹配格式
     5         */
     6         var re = /<%([^%>]+)?%>/g;
     7         console.log(s.match(re));           // 一次性把所有的匹配结果返回   
     8         console.log(re.exec(s));            // 第一次皮匹配结果
     9         console.log(re.exec(s));            // 第二次皮匹配结果
    10         console.log(re.exec(s));            // 第三次皮匹配结果
    11     </script>

    2.5.2 正则匹配初级:match() 与exec()的差异

     1  <script>
     2         var s = '我的名字是:<%name%>, 年龄是<%age%>,性别:<%sex%>';
     3         var arr = []; //存放整体匹配结果
     4         var re = /<%([^%>]+)?%>/g;
     5         var item = []; //存放单次匹配结果
     6 
     7         while (item = re.exec(s)) { //第三次的时候 item = null, 循环退出
     8             arr.push(item); // item 中有两个值,一个是整体匹配的结果,另一个是子匹配的结果
     9         }
    10         console.log(arr.join(''));
    11     </script>

    http://www.cnblogs.com/huanying2015 博客随笔大多数文章均属原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    dos常用命令
    组合封装知识点
    继承与派生知识点
    继承与派生
    面向对象知识点
    面向对象
    Day 84 DRF的分页和过滤
    Day80 使用第三方(腾讯云)短信验证码接口
    Day 79 xadmin后台管理/Git仓库
    Day 77 三大认证组件
  • 原文地址:https://www.cnblogs.com/huanying2015/p/8378069.html
Copyright © 2011-2022 走看看