一、URL转义:对URL进行编码、解析,原字符串不动,生成新的字符串,

  方法一:encodeURI()与decodeURI(),不会对下列字符编码:  ASCII字母、数字、~!@#$&*()=:/,;?+'

  方法二:encodeURIComponent()与decodeURIComponent(),不会对下列字符编码: ASCII字母、数字、~!*()'

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>text</title>
    <style>

    </style>

</head>
<body>
    <div>JS基础学习:其他</div>
    <div>转义:对URI进行编码、解析,原字符串不动,生成新的转义字符串,</div>
    <div>encodeURI与encodeURIComponent,均不能对数字和某些特殊的字符进行编码,且前者编码的范围较小</div>


    <script>
        var s1 = "http://URL你好";
        console.log(s1);                //http://URL你好

        //1、encodeURI 与 decodeURI ,不将http://转义,
        //对字符串进行编码,
        s1_encode = encodeURI(s1);
        console.log(s1_encode);         //http://URL%E4%BD%A0%E5%A5%BD
        //将转义的字符串解析,
        s1_decode = decodeURI(s1_encode);
        console.log(s1_decode);         //http://URL你好
        console.log(s1===s1_decode);    //true

        //2、encodeURIComponent 与 decodeURIComponent ,将http://转义,
        //对字符串进行编码,原字符串不动,生成新的转义字符串,
        s1_encodeC = encodeURIComponent(s1);
        console.log(s1_encodeC);         //http%3A%2F%2FURL%E4%BD%A0%E5%A5%BD
        //将转义的字符串解析,
        s1_decodeC = decodeURIComponent(s1_encodeC);
        console.log(s1_decodeC);         //http://URL你好
        console.log(s1===s1_decodeC);    //true

    </script>
</body>
</html>
View Code

  注意:同样进行转义的,还有escape方法,它主要针对cookies使用,其中 ASCII字母、数字、@*/+ 不会被编码。此方法不常用。

二、序列化:其他数据类型和字符串之间的转换,生成新数据,原数据不变,

   JSON.stringify()将其他数据类型,转换成字符串,

   JSON.parse()将字符串解析成相应数据类型,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>text</title>
    <style>

    </style>

</head>
<body>
    <div>JS基础学习:其他</div>
    <div>序列化:不同数据格式与字符串之间的转化</div>
    <div></div>


    <script>
    //JSON.stringify()将其他数据类型,转换成字符串,
    //JSON.parse()将字符串解析成相应数据类型,

        var a = [1,2,3,"fe",];
        a_json = JSON.stringify(a);
        console.log(a,typeof a);                        //[1, 2, 3, "fe"] "object"
        console.log(a_json,typeof a_json);              //[1,2,3,"fe"] string
        a_json_parse = JSON.parse(a_json);
        console.log(a_json_parse,typeof a_json_parse);  //[1, 2, 3, "fe"] "object"
        console.log(a_json_parse === a);                //false

        b = {k1:12,k2:"lucy",}
        b_json = JSON.stringify(b);
        console.log(b,typeof b);                        //{k1: 12, k2: "lucy"} "object"
        console.log(b_json,typeof b_json);              //{"k1":12,"k2":"lucy"} string
        b_json_parse = JSON.parse(b_json);
        console.log(b_json_parse,typeof b_json_parse);  //{k1: 12, k2: "lucy"} "object"
        console.log(b_json_parse === b);                //false


    </script>
</body>
</html>
View Code

三、eval:可以解析并执行字符串格式的表达式或代码

  python中的eval计算字符串形式的公式、并返回计算结果;exec解析字符串形式的代码并执行、返回执行结果,

  这里的eval包含了上述两种功能,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>text</title>
    <style>

    </style>

</head>
<body>
    <div>JS基础学习:其他</div>
    <div>eval:解析并执行字符串形式的表达式或代码,返回结果,</div>
    <div></div>


    <script>
    //计算字符串形式的表达式
        equ = "12+34";
        ret = eval(equ);
        console.log(ret,typeof ret);    //46 "number"
    //解析字符串形式的代码
        var str = "hello world!";
        cod = "console.log(str)";
        eval(cod);                      //hello world!


    </script>
</body>
</html>
View Code

四、正则表达式:

  在任何语言中的规则都基本相同,这里重点强调的是:test 匹配项检查,exec 获取匹配元素,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>text</title>
    <style>

    </style>

</head>
<body>
    <div>JS基础学习:其他</div>
    <div>正则表达式</div>
    <div></div>


    <script>
    /*
    //test:检查某个字符串是否符合某种模式
    re = /\d+/

    str = "234324234dfa"
    ret = re.test(str);
    console.log(ret);       //true

    strN = 1432423;
    ret = re.test(strN);
    console.log(ret);       //true

    strS = "JFIOFJ";
    ret = re.test(strS);
    console.log(ret);       //false
    */

    //exec:获取匹配某种模式的字符串
    re = /hello/
    str = "hello world";
    ret = re.exec(str);
    console.log(ret);       //["hello", index: 0, input: "hello world"]
    

    </script>
</body>
</html>
View Code

五、关于时间:涉及到的时间只有两种:统一时间、东八区时间,东八区时间比统一时间多8个小时,

  通过创建时间对象,调用关于时间的各方法,进行时间的读取和设置,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>text</title>
    <style>

    </style>

</head>
<body>
    <div>JS基础学习:其他</div>
    <div>date</div>
    <div></div>


    <script>
    //东八区时间
        date =  new Date();
        console.log(date.getTime());        //1502602129115,1970年1月1日至今的毫秒数
            //返回一月中的一天,几号
        console.log(date.getDate());        //13
            //返回一周中的一天,0-6,周几
        console.log(date.getDay());         //0
            //返回月份
        console.log(date.getMonth());       //7
            //返回年
        console.log(date.getYear());        //117,被getFullYear替代,
        console.log(date.getFullYear());    //2017
            //返回小时、分钟、秒数
        console.log(date.getHours(),date.getMinutes(),date.getSeconds(),); //13 32 4
    //世界统一时间:比东八区时间,少8小时
        date =  new Date();
            //返回一月中的一天,几号
        console.log(date.getUTCDate());        //13
            //返回一周中的一天,0-6,周几
        console.log(date.getUTCDay());         //0
            //返回月份
        console.log(date.getUTCMonth());       //7
            //返回年
        console.log(date.getUTCFullYear());    //2017
            //返回小时、分钟、秒数
        console.log(date.getUTCHours(),date.getUTCMinutes(),date.getUTCSeconds(),); //5 35 20
    //除了读取时间,还可以对时间进行设置
        date.setDate(12);
        console.log(date.getDate());        //12
        

    </script>
</body>
</html>
View Code

   ·在页面上显示时间的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>time</title>
</head>
<body>
    <div id='date'></div>

    <script language="JavaScript">
        function getdates(){
            var w_array=new Array("星期天","星期一","星期二","星期三","星期四","星期五","星期六");
            var d=new Date();
            var year=d.getFullYear();
            var month=d.getMonth()+1;
            var day=d.getDate();
            var week=d.getDay();
            var h=d.getHours();
            var mins=d.getMinutes();
            var s=d.getSeconds();

            if(month<10) month="0" + month
            if(day<10) month="0" + day
            if(h<10) h="0" + h
            if(mins<10) mins="0" + mins
            if(s<10) s="0" + s

            var shows="现在时间是:" + year + "-" + month + "-" + day + " " + h + ":" + mins +  ":" + s + " " + w_array[week];
            document.getElementById("date").innerHTML = shows;
            setTimeout("getdates()",1000);
        }
        getdates();
    </script>
</body>
</html>
View Code