javaScript day03 循环,函数,数组

目录

 

1.循环

    1.循环的流程控制

     2.for循环

            4.循环的嵌套

2.函数

    1.什么是函数

    2.在JS中创建函数

    4.匿名函数

    5.变量的作用域

    6.声明提前

3.数组 - Array

    1.什么是数组

    2.创建数组

    3.数组的使用

    4.获取数组的长度


1.循环

    1.循环的流程控制

        1.break
            在循环体内使用,用于跳出整个循环结构
        2.continue
            在循环体内使用,用于跳出本次循环,继续执行下次循环

     2.for循环

        1.while
            打印1-100之间的数字
            var i = 1: //  循环条件的初始化
            while(i<=100){  // 循环条件的判断
                console.log(i);  // 循环操作
                i++;  // 更新循环条件
            }
        2.for
            1.语法
                for(表达式1;表达式2;表达式3){
                    循环操作
                }

                表达式1:循环条件的初始化
                表达式2:循环条件的判断
                表达式3:更新循环条件

                打印1-100之间所有的数字
                for(var i=1;i<=100;i++){
                    console.log(i);
                }

                流程:
                    1.先执行表达式1,声明条件(执行1次)
                    2.再判断表达式2的值,true或false
                    3.如果条件为true,则执行循环操作
                      如果条件为false,就退出循环
                    4.执行完循环操作后,再执行表达式3
                    5.再判断表达式2的值,同步骤2

                // 计算1-100之间的所有数字的和
                var sum = 0;
                for(var i = 1;i<=100;i++){
                    sum += i;
                }
                console.log("1-100之间所有的数字的和为:"+sum);
            2.for vs while
                1.相同
                    先判断条件,在执行循环操作
                2.不同
                    while:优先使用在不确定循环次数的场合下
                    for:优先使用在确定循环次数的场合下
            3.练习
                1.修改日期计算器,将while 循环更改为for 循环
                2.判断素数(质数)
                    1.从弹框中随意录入一个数字,判断其是否为素数
                        素数:只能被1和它自己整除的数字

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        var year = Number(prompt("请输入年:"));
        var month = Number(prompt("请输入月:"));
        var day = Number(prompt("请输入日:"));
        var totalDays = 0;
        for(var i=1900;i<year;i++){
            totalDays += 365;
            if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0)
                totalDays += 1;
        }
        for(var i=1;i<month;i++){
            switch(i){
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                    totalDays +=31;
                    break
                case 4:
                case 6:
                case 9:
                case 11:
                    totalDays +=30;
                    break
                case 2:
                    totalDays +=28;
                    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
                        totalDays +=1;
            }
        }
        totalDays += day;
        var m = totalDays % 7;
        if(m==0){
            m="日"
        }
        console.log(totalDays);
        console.log("星期"+m);
    </script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        var n = Number(prompt("请输入一个数:"));
        var flag = true;
        for(var i = 2;i<=n/2;i++){
            if(n % i == 0){
                flag = false;
                break
            }
        }
        if(flag){
            console.log(n+"是素数");
        }else{
            console.log(n+"不是素数");
        }
    </script>
</body>
</html>

            4.循环的嵌套

                允许在一个循环的内部再出现一个循环
                // 外层循环
                for(var i=1;i<=10;i++){
                    for(var j=1;j<=10;j++){

                    }
                }
                外层循环走一次,内层循环走一轮

                练习:在控制台中打印以下图形
                    *
                   ***
                  *****
                 *******
                *********    

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        var line = Number(prompt("输入数字"));
        for(var i=1;i<=line;i++){
            // i 表示当前行
            var msg = '';
            // 将空格 和星星 追加到msg后面
            //控制空格的循环
            for(var j=1;j<=line-i;j++){
                msg += ' ';
            }
            // 控制星星的循环
            for(var m=1;m<=(2*i-1);m++){
                msg += ('*');
            }

            console.log(msg);
        }
    </script>
</body>
</html>

2.函数

    1.什么是函数

        函数,又称 function,是一段被预定义好,并可以独立反复执行并包含多条执行语句的代码块

    2.在JS中创建函数

        function 函数名(参数){
            函数体
            [返回值]
        }

        参数列表:
            如果没有参数,此处为空
            如果有参数,则编写参数列表,如果有多个参数的话,各个参数之间使用","隔开
            有参数的函数在调用时,就要传参,如果未传参的话,那么参数的值就是 underfined
        返回值:
            在函数体内,经过运算后,需要传递给函数调用者的一个值,就是返回值
            返回值是可选的,有返回值的话,需要使用return 进行返回,但最多只能返回一个值

    3.函数的调用

        在任意的JS的合法位置处,都允许做函数的调用
        var ret = 函数名(参数列表);
        有参数,则传递参数,否则参数列表为空
        有返回值,则可以接收返回值;如果没有返回值的话,返回值为 undefined

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        //

        function isRun(){
            var year = prompt("请输入一个年份");
            return year%4==0&&year%100!==0||year%400==0;
        } 
        // 网页加载的时候就调用isRun()
        // console.log(isRun());
    </script>
    <button onclick="alert(isRun())">判断闰年</button>
</body>
</html>

    练习:
        修改作业内容:
        1.将作业中的所有内容提炼成一个函数,通过一个按钮调用执行
        2.将闰年判断的逻辑提炼成一个函数
            参数:要判断的年份
            返回值:是否为闰年的结果(boolean)
        将日期计算器作业中所有闰年判断的逻辑改为函数调用

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        function isRun(year){
            return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
        }

        function calDate(){
            var year = Number(prompt("请输入年:"));
            var month = Number(prompt("请输入月:"));
            var day = Number(prompt("请输入日:"));
            var totalDays = 0;
            for(var i=1900;i<year;i++){
                totalDays += 365;
                if(isRun(i)){
                    totalDays += 1;
                }
            }
            for(var i=1;i<month;i++){
                switch(i){
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                        totalDays +=31;
                        break
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        totalDays +=30;
                        break
                    case 2:
                        totalDays +=28;
                        if (isRun(year))
                            totalDays +=1;
                }
            }
            totalDays += day;
            var m = totalDays % 7;            
            return ("星期"+m);
        }
    </script>
    <button onclick="alert(calDate())">日期计算器</button>
</body>
</html>

    4.匿名函数

        1.什么是匿名函数
            匿名函数是一个没有名称的函数,该类函数会针对某一个功能而存在,不能独立声明
        2.语法
            function(参数列表){
                函数体
            }

            window.onload = function(){
                console.log(.... ....)
            }

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        window.onload = function(){
            console.log("网页加载后就执行的内容");
        }
        function initial(){
            console.log("网页加载后就执行的内容(非匿名函数)");
        }
        window.onload = initial;
    </script>
</body>
</html>

    5.变量的作用域

        1.什么是变量的作用域
            变量的作用域指的是变量的可访问范围
        2.作用域的分类
            1.局部变量
                使用var关键字声明在某个函数内的变量,就是局部变量
                局部变量只能在声明的函数内使用
            2.全局变量
                1.在function之外声明的变量全部都是全局变量
                2.声明变量只要不使用var关键字,全部都是全局变量
                全局变量可以应用在各个函数中
                注意:全局变量,推荐在所有的function之外使用var关键字去声明

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        var g_num = 185;
        function funA(){
            var num = 85;
            str = "funA中声明的全局变量";
            console.log("在funA中声明的变量:"+num);
            console.log("全局变量g_name:"+g_num);
            console.log("全局变量str:"+str);
        }
        function funB(){
            // console.log("使用在funA中声明的变量num:"+num);
            console.log("全局变量g_name:"+g_num);
            console.log("全局变量str:"+str);
        }
        function funC(){
            //uname 会被预读到funC函数的顶端,等同于
            // var uname; 但赋值还保留在原来的位置处
            console.log(uname); //值为:undefined
            var uname = "张学友";
            console.log(uname);
        }
    </script>
    <button onclick="funA()">funA</button>
    <button onclick="funB()">funB</button>
    <button onclick="funC()">funC</button>
</body>
</html>

    6.声明提前

        在JS中使用var声明的变量,在程序执行之前都会被预读到所在作用域的顶端,但赋值还保留在原位

3.数组 - Array

    1.什么是数组

        数组(Array),是一个用于保存批量数据的数据结构
        数组是按照线性结构来保存数据的

    2.创建数组

        (使用数组直接量的方式创建)
        1.创建一个空数组
            var 数组名 = [];
        2.创建数组并初始化数据
            var 数组名 = [元素1,元素2,元素3,...];
        (使用数组的构造函数创建)
        3.创建一个空数组
            var 数组名 = new Array();
        4.创建数组并初始化数据
            var 数组名 = new Array(元素1,元素2,元素3)

    3.数组的使用

        获取 或 设置数组的元素的值,一律使用下标
        下标是从0开始,到数组元素个数-1结束
        var arr1 = ["路飞","乔巴","乌索普"];
        1.将数组中的第一个元素更改为 香吉士
            arr1[0] = "香吉士";
        2.打印输出 arr1 数组中的第2个元素
            console.log(arr1[1]);
        3.为arr1数组中的第10个元素赋值为"罗宾"
            arr1[9] = "罗宾"

    4.获取数组的长度

        属性:length
        用法:数组名.length
        使用场合:
            1.能够找到数组中,要最新插入的元素的位置(向数组尾部增加新元素时使用)
            var arr1 = ["路飞","乔巴","乌索普"];
            //向arr1数组中追加新元素 - 艾斯
            arr1[arr1.length] = "静音";
            arr1[arr1.length] = "萨博";
            2.配合循环,遍历数组中的每个元素
            var arr1 = ["路飞","乔巴","乌索普"];
            for(var i = 0;i < arr1.length; i++){
                console.log(arr1[i]);
            }
            for(var i = arr1.length-1;i>=0;i--){
                console.log(arr[i]);
            }
        练习:
            1.让用户循环的从弹窗中录入数据,并将录入的数据保存在一个数组中,直到输入exit为止(exit不存),最后打印数组中所有的数据
            2.声明一个数组,存放若干人的姓名
                要求 从弹框中录入一个人的姓名,并判断该人的姓名在数组中的下标是多少
                如果存在:则显示下标的值
                如果不存在:提示 输入的数据不存在

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        function exer1(){
        //声明一个空数组,用于保存用户输入的数据
            var arr1 = [];
            while(true){
                var n = prompt('请输入数据:');
                if(n == 'exit'){
                    break;
                }
                arr1[arr1.length] = n;
            }
            return arr1;
        }
        console.log(exer1());
    </script>
    <button onclick="exer1()">练习</button>    
</body>
</html>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        function exer2(){
            var arr1 = ["路飞","乔巴","乌索普","萨博","艾斯"];
            var name1 = prompt("请输入姓名:");
            for(var i=0;i<arr1.length;i++){
                if(name1 == arr1[i]){
                    console.log('下标为'+i);
                    break;
                }
            }
            if(i == arr1.length){
                console.log("您输入的元素不存在!");
            }
        }
    </script>
    <button onclick="exer2()">练习2</button>
</body>
</html>

        作业:
            1.解决 练习2
              如果输入的姓名在数组中存在多个怎么办?
            2.声明一个数组保存三个数字,将三个数字按照从小到大的方式排列
                nums = [76,12,51]
                ...  ...
                nums = [12,51,76]

                var nums = [76,12,51];

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
</head>
<body>
    <script>
        function home1(){
            var arr1 = ["漩涡鸣人","卡卡西","小樱","漩涡鸣人"];
            //存放找到的信息的下标
            var indexArr = [];
            var input = prompt('请输入用户名');
            //循环遍历arr1,查找input 是出现在arr1中
            for(var i=0;i<arr1.length;i++){
                if(arr1[i] == input){
                    indexArr[indexArr.length]=i;
                }
            }
            //判断indexArr的长度,如果长度>0,说明input在arr1中出现过至少一次
            if(indexArr.length > 0){
                console.log('出现的下标为:'+indexArr);
            }else{
                console.log('不存在');
            }
        }

        function sort1(){
            var nums = [76,12,51,45,467,8,3463,45234,7,8,5,7,45,758];
            var a = 1
            while(a<=nums.length){
                for(var i = 0; i < nums.length; i++){
                    if(nums[i]>nums[i+1]){
                        nums[i] ^=nums[i+1];
                        nums[i+1] ^=nums[i];
                        nums[i] ^=nums[i+1];
                    }
                }
                a++;
            }
            console.log(nums);
        }
        sort1();
    </script>
    <button onclick="home1()">数组</button>
    <button onclick="sort1()">排序</button>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/zh__quan/article/details/81636201