初学JS(循环递归、闭包、字符串操作)

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

</head>
<body>
<!--
js   ecmaScript5.0  es5  原生js
6.0   es6    在原生js基础上 更新  前端-后端 后端基本一样
es7....
//功能:  数据交互
         特效
         //大量的逻辑代码
         表单验证
         正则表达式

        方式:1.js里面的基本语法
                变量  闭包  逻辑结构  循环结构  函数(参数   自执行  匿名函数  返回值函数问题   函数递归)
              2.window 对象  -document(dom--操作)  --history历史   ---location  地址对象  (bom-操作)
              3.js里面的内置对象  Array  String  Date   Math
              4.继承之类 (面向对象的开发   原型链继承  构造继承  实例继承 混合继承)
              5.模式 (单例模式)
              6.ajax(原理   跨域的问题)
              7.js 异常  try catch
              11天


              js如何嵌入网页使用--类似css使用方式   直接在script  src引入(外部文件)   或者直接写在页面里面 script  里面写的代码  --放置的位置  取决于加载的位置
-->
</body>
</html>

JS循环结构:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        /*
         * 循环结构
         * for   while  do while
         * */
        /*
         * 最简单的for怎么写  死循环
         * */
        /*for(;;){

         }*/

        /* for(var i=0;i<10;i++){
         console.log(1);
         }
         for(var i=10;i>=0;i--){

         }*/

        /* for(var i= 0,k=10;i<k;i++)
         {
         console.log(1);
         }*/
        /*
         * 金子塔线条
         * */
        /*var s = "ab";
         var l = "de";
         var h="c";
         console.log("ab" +"c"+ "de");
         for(var i=1;i<50;i++)
         {
         document.write("<hr style='width:"+(i*10)+"px;'/>")
         }*/


        /*
         * 金子塔  乘法表
         * */
        for (var i = 1; i < 10; i++) {
            for (var k = 1; k <= i; k++) {
               /* if (k * i < 10) {
                    document.write("<span>" + (i + "*" + k + "=" + k * i + "&nbsp;&nbsp;&nbsp;") + "</span>");
                }
                else {
                    document.write("<span>"+(i + "*" + k + "=" + k * i + "&nbsp;")+"</span>");
                }*/
                document.write("<span>"+(i + "*" + k + "="+(k * i<10?(k * i) + "&nbsp;&nbsp;&nbsp;":(k*i)+"&nbsp;"))+"</span>");

            }
            document.write("<br>");
        }

        //打印***
        //******
        //  ******
        //    ******
        //      ******
        for(var i=0;i<4;i++)
        {
            for(var k=0;k<2*i;k++)
            {
                document.write("_");
            }
            for(var k=0;k<6;k++)
            {
                document.write("*");
            }
            document.write("<br>");
        }

    </script>
    <style>
        body {
            text-align: center;
        }

        span {
            display: inline-block;
            width: 100px;
            height: 30px;
            text-align: center;
            line-height: 30px;
            border: 1px solid black;
        }
    </style>
</head>
<body>

</body>
</html>
JS函数样式:
    <!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        /*
        * js里面的函数问题
        * 什么是函数?  (方法   调用完成  )
        *函数的声明规则   关键字  function
        * function name(){}
        * 函数的调用规则  name();
        * 函数的声明提前  在代码执行之前提前声明
        * */
        //声明函数
        name();
        function name(){
            console.log(1);
        }
        //函数里面的其他问题
        //参数问题   返回值问题   函数的自执行问题  匿名函数
        /*
        * 1.函数的参数   参数:形参   调用函数传递的值  实参
        * */
        student(1,2,3);
        function student(name,sex,age){
            console.log(name,sex,age);
        }
        //无参函数

        //arguments  函数特有的属性  里面是函数的相关参数
        stu(1,2,3,4,5,6);
        function stu(){
            /*arguments.length*/// 参数列表的长度
            console.log(arguments[0],arguments[1],arguments[2],arguments[3]);
        }
        //函数有无返回值问题  return  返回  直接跳出  后续代码不执行
        console.log(showname());
        function showname(){
            //代码
            return 1;
        }

        //自执行函数   匿名函数 函数没有名称
        (function (){
            console.log(123);
        })();
        (function (a,b){
            console.log(a,b);
        })(1,2);

        //匿名函数 函数没有名称
        console.log(fun);//变量也可以提前声明
        //fun()   报错   fun is not function
        //下面这种声明方式的函数  不能被提前声明
        var fun=function (){
            console.log(1);
        }
        fun();


    </script>
</head>
<body>

</body>
</html>
    <!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        /*
        * 循环结构
        * while (先判断)
        * do while(先执行后判断  至少一次)
        *
        * */
        var n=0;
        while(n>1){
            n++;
            console.log(n);
        }
        var m=0;
        do{
            m++;
            console.log(m);
        }while(m>1);
    </script>
</head>
<body>

函数递归:

   <!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        /*
         * 函数的递归  反复执行自己本身
         * */
        /* show();
         function show(){
         //写代码
         show();
         }*/
        /*
         *阶乘
         * */
        /* function fun(num) {
         if (num == 1) {
         return 1;
         }
         return num * fun(num - 1);
         }
         console.log(fun(5));*/
        /*fun(5)  -----5*4*3*2*1
         fun(4)  -----4*fun(4-1)
         fun(3)------3*fun(3-1)
         fun(2) -----2*1*/


        //??   fun(5)=5*fun(4)
        /* 5*fun(4) //fun(4)=4*fun(3)
         4*fun(3)
         3*fun(2)
         2*fun(1)
         5*4*3*2*1*/
        /*寻找1~1000之内,所有能被5整除、或者能被6整除的数字*/
        /* for(var i=1;i<1000;i++)
         {
         if(i%5==0||i%6==0)
         {
         console.log(i);
         }
         }*/
        /*
         *
         * 游戏玩儿法就是,大家轮流报数,如果报到能被7整除的数字,或者尾数是7的数字,都算踩地雷了。就应该罚唱歌。
         请在控制台输出1~60之间的所有“安全数”。
         * */
        /* for(var i=1;i<60;i++)
         {
         if(!(i%7==0||i%10==7))
         {
         console.log(i);
         }
         }*/

        /*
         * 1-100 所有的素数   只能被1 和  自身 除   ----除了1和本身  其他的数能除的就不素数
         * */
        for (var i = 2; i < 100; i++) {
            var issu = false;//判断你到底是不是素数   true不是  false是
            for (var k = 2; k < i; k++) {
                if (i % k == 0) {
                    issu = true;
                }
            }
            if (!issu) {
                console.log("素数:" + i);

            }
        }

        /*
         * 找数字的因数
         * */
        /* var a = 15;
         for (var i = 0; i < a; i++) {
         if (a % i == 0) {
         console.log(i);
         }
         }*/

        /*Fibonacci   11235....*/
        /*
         *  第几位数列的值
         *  递归
         * */
        /* function fun(num){
         if(num<=2)
         {
         return 1;
         }
         return fun(num-1)+fun(num-2);
         }
         console.log(fun(5));*/

    </script>
</head>
<body>

</body>
</html>
JS字符串常用方法:
    <!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        /*
         * 字符串的方法
         * 查找字符的方法
         * */
        var str = "a|b|c|d|efg";
        /*一个参数   找到了返回当前字符的索引位置   没找到直接返回-1*/
        console.log(str.indexOf("m"));
        /*两个参数  找到字符返回字符的索引位置  没找到返回-1  从哪个位置开始找*/
        console.log(str.indexOf("a", 0));
        /* str.lastIndexOf()*///后往前面找
        //遍历字符串  获取每个字符的索引位
        //遍历
        //charAt(pos)  根据索引获取对应的字符
        for (var index in str) {
            /*console.log(str[index]);*/
            console.log(str.charAt(index));
            console.log(str.charCodeAt(index));//根据索引获取对应的ascii值
        }
        var as = 97;
        console.log(String.fromCharCode(as));

        //其他方法  split 将字符串转化为集合
        console.log(str.split("|"));
        //集合转化为字符串
        var ss = str.split("|");
        console.log(ss.join(""));
        //字符串的拼接   concat   合并
        var c1 = "abcb";
        var c2 = "def";
        console.log(c1.concat(c2));
        //替换 replace  替换
        console.log(c1.replace("b", 1));
        //字符串的截取   substr(index,length)
        console.log(str.substr(1, 4));
        //substring(startindex,endindex);
        console.log(str.substring(1, 4));

        //查找索引
        console.log(str.search("a"));
        //大小写转化的方法toUpperCase() 转化大写  toLowerCase  转化为小写
        console.log(str.toUpperCase().toLowerCase());

        //slice 截取字符串
        console.log(str.slice(0, 4), str);
    </script>
</head>
<body>

</body>
</html>

重点:
浅谈JS闭包:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script>
        /*
         * 什么是闭包:使用别人的私有变量
         * 优缺点:
         * 缺点:会将闭包的值存在内存里面  会占用内存   ----网页的内存泄露
         * 有点:可以使用局部变量
         *
         * 在做开发的时候尽量避免使用闭包
         *
         * */
        /* function fun1(){
         var a=10;
         return a;
         }
         function fun2(){
         console.log(fun1());
         }
         fun2();*/

        /*function f1(){
         var a=1;
         t=function (){
         a++;
         }
         return function (){
         console.log(a);
         }
         }
         var a=f1();//function (){console.log(a);}
         t();
         a();//2
         t();
         a();//3
         var a1=f1();//function (){console.log(a);}
         t();
         a1();//2
         t();
         a1();//3*/
        /*function f1() {
            var n = 999;
            return function f2() {
                return n;
            }
        }
        //f1() function f2(){ return n;}
        console.log(f1()());
        console.log(f1());*/
       /* var name="global";
        function foo(){
            console.log(name);
        }
        function fooOuter1(){
            var name="local";
            foo();
        }
        fooOuter1();

        function fooOuter2(){
            var name="local";
            function foo(){
                console.log(name);
            }
            foo();
        }
        fooOuter2();*/


       /* function test() {
            var value =2;
            return function (params) {
                console.log(value * params);
                console.log(window.value * params);
            }
        }
        value=3;
        var a = test();//后边的匿名函数
        a(2); //params=2*/

       /* function f1(){
            var b=10;
            return function (){
                b++;
                console.log(b);
            }
        }
        f1()();*/
        var m=0;
        function f2(n){
            temp=function (){
                m+=n;
            }
            temp();
            //方法的重写
            f2.toString=function (){
                return m;
            }

            return f2;
        }

        console.log(f2(1)(2)(3));//算和
        var aa=123;
        console.log(typeof  aa.toString());;

    </script>
</head>
<body>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值