zoukankan      html  css  js  c++  java
  • 学习JS的第六天

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

         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就是立即执行函数的返回值。

  • 相关阅读:
    error: device not found
    xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Deve
    联想X系列服务器
    华为服务器
    linux db2升级
    aix6.1升级openssh&&openssl
    upgrading mysql: error: 1102: Incorrect database name
    linux7配置yum网络源
    How to install fixpack on DB2
    mysql 表空间管理
  • 原文地址:https://www.cnblogs.com/cy1218/p/4986864.html
Copyright © 2011-2022 走看看