day9 js3

 

 

 

 

数组

什么是数组?

数组是一组数据有序的集合。数组它是属于复合数据类型。至少可以存储一个值。

为什么要使用数组?

因为在我们工作中 有很多数据是有关联的  我们要表示的时候想把这些数据用一个”东西”来存储,这个时候就可以用到数组!

数组的相关概念

数组元素

指数组中的每一个数据!我们就把它们称之为数组元素

数组下标(索引)

每一个数组元素都对应着一个数组下标  数组的下标是从0开始  第一个数组元素的下标是0,第二个数组元素的下标为1  第三个数组元素的下标为2  依此类推!

如何访问数组里面的某一个元素

格式:

数组变量名[下标]

数组的长度

数组的长度:数组中元素的总个数

其实数组的变量名是一个数组对象  

如何去计算数组的长度:

数组变量名.length  

JS中 数组对象下面有一个length的属性  这个属性可以得到数组的长度

数组的长度与最大下标之间有什么关系

最大下标=数组的长度-1  

定义数组

使用[]来定义数组

第一种方式:先定义一个空数组 再往这个空数组中添加数组元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        //使用[]来定义数组
        //第一种方式:先定义一个空数组 再往这个空数组中添加数组元素
        var arr = [];
        //是通过下标来添加的
        arr[0] = "孙悟空";
        arr[1] = "猪八戒";
        arr[2] = "杨戬";

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

第二种方式:在定义数组时候直接添加数组元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        //使用[]来定义数组
        //第一种方式:先定义一个空数组 再往这个空数组中添加数组元素
        var arr = [];
        //是通过下标来添加的
        arr[0] = "孙悟空";
        arr[1] = "猪八戒";
        arr[2] = "杨戬";
        /*arr[99] = "红孩儿";*/

        console.log(arr);

        //第二种方式:在定义数组时候直接添加数组元素
        var arr1 = ["武庚","白菜","纣王","妲己"];

        console.log(arr1);

    </script>
</body>
</html>

使用new关键字和Array()方法来定义数组 

第一种方式:创建一个空数组

第二种:创建一个数组 要指定数组的长度

第三种:创建一个数组 并指定数组元素

注意:

在工作中一般都是使用[]来创建数组  基本上不会使用new关键字和Array方法来创建

多维数组

JavaScript它本身是没有多维数组的概念,因为在JavaScript数组元素的数据类型可以是任意数据类型。假设在一个数组中有一些数组元素的的类型还是数组  这个时候我们就将它称之为多维数组!

一维数组

简单来说,一个数组内所有的元素的数据类型的都不是数组类型,就是一维数组。

多维数组

超过一维都是可以叫多维,多维数组指的是一个数组中的元素又是一个数组。

如何访问二维数组的里面的数组元素呢?

格式:

数组变量名[一维数组的下标][二维数组的下标];

数组的遍历

什么是数组的遍历?

操作数组中的每一个数组元素

使用for循环来遍历数组

因为数组的下标是连续的,数组的下标是从0开始。

我们也可以得到数组的长度。

格式:

for(var i=0;i<数组的长度;i++){

数组变量名[i]

}

注意:条件表达式的写法 

l i<数组的长度

l i<=数组的长度-1

求数组中的最大值与最大值的位置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        //求数组中的元素的最大值与最大值的位置  

        var arr = [1,2,3,4,5,666,88];

    /*    var arrLength = arr.length;//得到数组的长度
        var sum = 0;
        for(var i=0;i<arrLength;i++){
            sum += arr[i];
        }

        document.write(sum/arrLength);*/

        //先假设数组的第一个元素最大值 
        var arrMax = arr[0];
        var arrMaxIndex = 0; //用于存储最大值的位置 
        var arrLength = arr.length;
        for(var i=1;i<arrLength;i++){
            //拿假设的变量与数组中的其它元素进行比较  
            if(arrMax < arr[i]){
                arrMax = arr[i];
                arrMaxIndex = i;
            }
        }

        document.write(arrMax+"<br/>"+arrMaxIndex);

    </script>
</body>
</html>

使用for..in语句来遍历数组

for..in它本身是用来遍历对象的,因为数组也是属于对象的一种,那么也可以使用for..in语句来遍历数组

格式:

for(var 变量名 in数组变量名){

数组变量名[变量名]

}

注意:

一般情况下我们都会使用for循环来遍历数组,因为使用for循环遍历数组非常直观。

使用数组的方式来实现输出今天星期几

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        var arr = ["星期天","星期一","星期二","星期三","星期四","星期五","星期六"];
        console.log(arr);
        //使用数组的方式来实现输出今天星期几 
        //第一步:先创建时间日期对象
        var myDate = new Date();
        //第二步:通过时间日期对象中的一个方法来获取一周中某一天  getDay(); 取值:0~6
        var week = myDate.getDay();
        //可以使用星期一这个变量来作为arr数组的下标  
        console.log("今天是:"+arr[week]);




    </script>
</body>
</html>

遍历二维数组

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        
        var arr = [
                ["周更生","",30,true,"大专",5000,500,"深圳黑马","山东省"],
                ["刘大庆","",26,false,"研究生",8000,1500,"北京科技大学","山西省"],
                ["习远平","",38,true,"大专",1000,250,"清华大学","陕西省"],
                ["李克弱","",34,true,"高中",11000,30,"河北大学","江苏省"]
              ];
        //遍历数组 肯定获取数组长度  
        //我们要求得到是一个表格  这个表格的行数是由一维数组的长度决定 
        //这个表格的每一行的列的数量是由二维数组的长度决定  
        var arrLength = arr.length; //      
        //使用一个变量来保存表格  
        var str = "<table width='800' align='center' border='1' rules='all'>";
            //对表格的行进行循环 
            for(var i=0;i<arrLength;i++){
                str += "<tr>";
                //表格的每一行的列的数量是由每一个二维数组的长度决定 
                for(var j=0;j<arr[i].length;j++){
                str += "<td>"+arr[i][j]+"</td>";
                }
                str += "</tr>";
            }
            str += "</table>"

            document.write(str);


    </script>
</body>
</html>

函数

什么是函数?

函数是可以被命名的,它是为了解决某些功能的代码段!

可以被命名:表示函数是可以有名字的,也是可以没有名字的。

代码段:函数体

为什么要使用函数?

为了解决代码的重用!

减少代码量。

函数的分类

系统内置函数和程序猿自定义函数

定义函数

function 函数名([参数列表]){

函数体

return;

}

结构说明:

l function它是定义函数的关键字 不可以省略。

l 函数名它的命名规则与变量名是一样的

可以使用大小写英文字母、下划线(_)、美元符号($)、数字组成

n 不能使用数字开头

不能使用JS中的关键字和保留字作为函数名

n 如果函数是由多个单词组成的,那么可以使用下划线连接法和驼峰法

严格区分大小写

函数名后面紧跟着一对小括号 这一对小括号不能省略

l 小括号里面可能有参数,我们将其称之为形参

小括号后面紧跟着一对大括号 这一对大括号不能省略

l 大括号里面是函数体

注意:函数定义了一定要调用函数

调用函数

格式:

函数名([实参列表])

注意:在定义函数时如果有形参  反过来说 在调用的时候也要有实参 但是这个不是绝对的!

 同名函数后面的会将前面的覆盖

 

函数一定是先定义后再调用

函数的参数

函数的参数分为两种:

形式参数和实际参数

形式参数:在定义函数的时候的参数就称之为形式参数,简称形参”  

在定义函数的时候 在函数名的后面的小括号里面给的变量名   

实际参数:在调用函数的时候的参数就称之为实际参数,简称“实参”

使用函数来动态的输出MN 列的表格

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">
        //使用函数来动态的输出M行N 列的表格

        function showTables(rows,cols,wid){
            var str = "<table width='"+wid+"' border='1' align='center' rules='all'>";
                //表格的行是由rows决定 
                for(var i=1;i<=rows;i++){
                    str += "<tr>";
                    //每一行的单元格是由cols决定 
                    for(var j=1;j<=cols;j++){
                        str += "<td>&nbsp;</td>";
                    }
                    str += "</tr>";
                }
                str += "</table>";
                document.write(str);
        }


        showTables(10,4,800);
        document.write("<hr/>");
        showTables(15,6,1200);


    </script>
</body>
</html>

函数形参参数的默认值

 上图所示:在定义函数的时候给形参赋值  称形参的默认值

 

关于函数形参中的默认值有一个问题需要大家注意:

 

如果形参中有多个参数,默认值一定要放置在形参列表的最后面

return关键字

一般在函数体里面不会有输出语句,只会有一个return关键字,将我们要输出的内容返回给函数的调用者。

l return在英文中表示“返回”的意思

l return关键字是在函数体里面使用。

它在函数体使用有两层含义:

1当函数体里面遇到了return关键字以后,当前的这个函数就不会再往下进行执行了。

2它会向函数的调用者返回数据 (重点)  返回值 

格式:return 数据;

在调用函数时 可以定义一个变量要接收到这个函数的返回值  

 

注意:

我们在以后的工作中,函数体里面尽量不要有输出语句(document.write alert console.log ),尽量的使用return关键字将数据返回给函数的调用者。

特别强调:

在一个函数里面,return关键字可以有多个,但是return只会执行一次

l return关键字它只能返回一个数据,如果需要返回多个数据,我们可以将多个数据使用数组的方式来保存,然后再将数组返回。

匿名函数

什么是匿名函数?

没有名字的函数 称之为匿名函数! 注意:匿名函数在JS中使用最多

匿名函数也是需要调用的!

将匿名函数赋值给变量或者是事件

a) 将匿名函数赋值给变量,然后通过变量名加上小括号来调用匿名函数

 

b) 将匿名函数赋值给事件     *****

将匿名函数赋值给事件 那么匿名函数什么时候才会执行?它要等到事件触发了以后 匿名函数才会执行。

c) 匿名函数的自调用 匿名函数自己调用自己  在一些JavaScript框架中 jQuery 都是匿名函数自调用 

 

变量的作用域

什么是变量的作用域?

指变量在什么地方可以使用,什么地方不可以使用。

变量作用域的分类

变量作用域分为:全局作用域和局部作用域。

变量的作用域是通过函数来进行划分的。

 

在函数外面定义的变量我们将其称为全局变量,它的作用域是全局的。

全局作用域:变量在函数外面和函数里面都可以使用。

在函数里面定义的变量我们将其称为局部变量,它的作用域是局部的。

局部作用域:变量只能在该函数里面使用,在函数外面不可以使用。

问:是否能够提升局部变量的作用域呢?将局部变量的作用域提升至全局作用域。

在函数里面定义的变量也能够在函数外面访问到。

只需要将函数里面定义的变量的var关键字给去掉就可以实现将局部变量的作用域提升至全局作用域。

但是:并不建议直接就var 关键字给省略,我们建议在函数的外面定义一个同名的全局变量。

值传递与引用传递

传递--à赋值 变量与变量之间的赋值操作 就称为传递!

注意:

JS中,基本数据类型之间的赋值操作都是值传递,复合数据类型之间的赋值操作都是引用传递。

值传递

将一个变量的值赋值给另外一个变量,如果修改其中一个变量的值,不会影响到另外一个变量的值!这两个变量之间是没有任何的联系。

引用传递

将一个变量的值(内存地址)赋值给另外一个变量,如果修改其中一个变量的值,会影响到另外一个变量的值,这两个变量之间是有联系的。

变量名变量值之间的关系!

变量名引用变量值 ,变量值被变量名所引用!

变量如何在内存中存储!

内存它是分区域:栈区和堆区

栈区:空间小,速度快   主要存储变量名以及值在堆区的地址

堆区:空间大,速度慢   主要存储变量的值  

作业:

使用函数来打印M*M乘法表

showCfb(15)

******   

定义一个函数,该函数能够判断一个数字是否是一个质数,是就返回true,否则就返回false。并利用该函数的功能,输出2-200之间的所有质数。

注:质数就是只能被1和它本身整除的数。

猜你喜欢

转载自www.cnblogs.com/Php1989/p/9546805.html
JS3
今日推荐