码迷,mamicode.com
首页 > Web开发 > 详细

学习JS的第六天

时间:2015-11-23 21:54:18      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

     今天学到的一些知识回顾和笔记

     1.正则表达式(RegExp)

    1.1 写法

      / 正则表达式的内容/

      例:/^\w{6,10}\@[0-9a-z]{1,4}.com$/  ,这就是一个正则表达式,简单的验证邮箱格式的表达式。

      下面解释一下例子:

        (1)^ : 正则表达式的开始。

      (2)$ :正则表达式的结束。

      (3)\w :代表数字、字母和下划线。

      (4){6,10} :大括号代表位数,这里的意思是6到10位,也就是要求前面的\w 为6到10位。

      (5)\@ :转义字符“\” 加上特殊符号就是指匹配这个字符。若不是正则表达式中的特殊字符(比如 "^" 和 "$"等),就可以不用加转义字符。

      (6)[0-9a-z] : 大括号代表的是范围,这里表示从0到9的任意数字和从a到z的任意字母。

      (7){1,4} : 同上面的{6,10}。

       还有一些经常用到的:

      (8)\d :表示的就是[0-9]。

      (9)\s : 空格

      (10)\D :匹配除了数字以外的。

      (11)\W: 与\w相反,匹配除了数字、字母和下划线以外的。

      (12)\S : 与\s 相反,匹配除了空格以外的。

       (13)  + :表示的是1到多位,{1,}

       (14)  * :表示的是0位或者是多位。

       (15)  "." :表示匹配所有的。

    1.2 方法

      (1)test():测试匹配的对象。

        一个匹配月份的例子:
                var month = "12";
                var val = /0[1-9]|1[0-2]/ ;   //月份有1-9月和10、11、12月,所以有0几月或者是1几月。"|"表示或。
                var result = val.test(month);    //正则表达式的方法test ,测试字符串变量month。
                console.log(result);      //控制台会输出true,若把month改成13,就会返回false。

      (2)exec() :匹配什么就显示什么,返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

         var str = "23342addff#"
                var reg = /[0-9a-z]\#/
                var re = reg.exec(str);
                console.log(re);   //显示出Array [f#],相连的才能匹配,比如说str变量中前面五个是数字,后面五个是字母,最后一个是# 若reg中存放的是/[0-9]{5}\#/ ,                  控制台里面显示为null。因为数字和#没有直接相连,这样就匹配不到。

    1.3 应用

      (1)join() : 将数组中的各个字符串连接,括号里面可以写自定义的连接符。

        var arr = ["hello","world","!"];
               var re = arr.join("$");      //对于数组arr 用"$"符号连接起来。
               console.log(re);        //显示出 hello$world$! 。

      (2)split() : 拆分数组

        var str = "2015@12-20";
                 var val = /[@-]/;
                 var re = str.split(val);    //对于字符串str,检索字符串中的正则表达式中的符号,用数组形式将他们分开。
               console.log(re);  //显示Array["2015","12","20"]

  2.toString()

    toString() 方法可把一个逻辑值转换为字符串,并返回结果。

      例:

      var num = 12343;
               var str = num.toString();    
             console.log(str);      //显示12343
               console.log(typeof(str));     //显示string

  3.关于闭包问题

    1.函数赋值有返回值
            var a = function(){    //将一个函数赋值给a,现在a就是一个函数。
                return "hello";    //返回值hello。  如果将这句话注释掉,那么下面b的值就是undefined,因为没有返回值,这个函数即使执行了b也不会得到任何值。后面写了如果没有返回值的情况。
            }
            a();  //调用函数a
            var b = a();  //定义b为这个函数a返回的值。
            console.log(b);     //控制台会显示hello

    2.立即函数有返回值
           var a = function(){            //a被赋值为立即函数的返回值,a不是一个函数了。
               return "haha"
            }()
            var b = a;   // 所以这里a就直接等于b,而不是a()。
            console.log(b);    //显示haha


    3.非立即函数没有返回值的情况。
               var a = function(){    //将一个函数赋值给a,现在a就是一个函数。
               }
            a();  //调用函数a
            var b = a();  //定义b为这个函数a返回的值。
            console.log(b);   //显示undefined,因为函数a没有返回值。

    4.立即函数没有返回值的情况
            var a = function(){   //a被赋值为立即函数的返回值,a不是一个函数了。
            }()          
            var b = a;   // 所以这里a就直接等于b,而不是a()。
            console.log(b);    //这里显示的也是undefined。

 

    综上,若函数没有返回值,不管是立即执行函数还是非立即执行函数都是没有值的,只会执行函数体里的代码,非立即函数还需调用函数才能执行。若函数有返回值,如果把非立即函数给了一个变量b,那么b就等于这个函数的返回值,如果是立即执行函数,那么b就是立即执行函数的返回值。

学习JS的第六天

标签:

原文地址:http://www.cnblogs.com/cy1218/p/4986864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!