JavaScript——数组&函数

本章的内容

本章的总体思路,围绕着数组展开。

数组Arry

一、数组是是?它有几种创建方式?

1.数组是什么?

  • 数组是一组相关的数据集合。可以把一组相关的数据一起存放,并提供方便的访问(获取)方式。
  • 数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。数组是一种将一组数据存储在单个变量名下的方式。

2.数组的创建方式

一共有两种方式。new一个,还有一种是字面量的方式。

  • new一个,
  var 数组名 = new Array() ;
  var arr = new Array();   // 创建一个新的空数组
  • 字面量的方式
    //1. 使用数组字面量方式创建空的数组
    var  数组名 = [];
    //2. 使用数组字面量方式创建带初始值的数组
    var  数组名 = ['大明','小陈','小张','老李'];
    //3.在数据中可以放任意类型
    var  数组名 = [0,true,'小张',13213];
    
  • 这种字面量方式也是我们以后最多使用的方式,也是在开发中常用的

3.如何访问数组中的元素?

4.使用索引(下标)进行访问。

  • 需要注意的是这里的索引是从0开始的。
// 定义数组
var arrStus = [1,2,3];
// 获取数组中的第2个元素
alert(arrStus[1]);  //这里获取的是值是 2  
alert(arrStus[6]);  //访问时数组没有和索引值对应的元素,则得到的值是undefined

5.有没有更快的访问方式?

  • 我们可以通过遍历的方式。一下子把数组的数组全拿出来。这个在实际的开发中,非常常用。
  • 使用for循环!
var arr = ['red','green', 'blue'];
for(var i = 0; i < arr.length; i++){
    console.log(arrStus[i]);
}
  • 这个代码里面的arr.length 指的是数组的长度,
  • 当我们数组里面的元素个数发生了变化,这个 length 属性跟着一起变化

数组的length属性可以被修改

  1. 如果设置的length属性值大于数组的元素个数,则会在数组末尾出现空白元素;>就增加
  2. 如果设置的length属性值小于数组的元素个数,则会把超过该值的数组元素删除,<就删除

6、如何新增元素呢?

我们通过一个简单的实例代码,很容易的就可以明白了。

  • 实现的原理就是:在数组的末尾插入新元素:
  数组[ 数组.length ] = 新数据;

  var arr = [1,2,3,4,5]
  alert(arr.length)   //这里是5个元素,所以长度是5.索引的最大值是4
  arr[arr.length] = 6;
  alert(arr.length)   //这里的长度就编程6了。

二、函数是什么?

1.概念以及简单的使用。

在 JS 里面,可能会定义非常多的相同代码或者功能相似的代码,这些代码可能需要大量重复使用。虽然 for循环语句也能实现一些简单的重复操作,但是比较具有局限性,此时我们就可以使用 JS 中的函数。

​ 函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用

  • 简单的使用
// 1. 声明函数
function 函数名() {
  //函数代码
}
// 2. 调用函数
函数名();

// 比如,我想实现一个累加的算法从用0一直加到100,

 function getSum(){
    var sumNum = 0;// 准备一个变量,保存数字和
    for (var i = 1; i <= 100; i++) {
      sumNum += i;// 把每个数值 都累加 到变量中
    }
    alert(sumNum);
  }
  // 调用函数
  getSum();

2.函数的参数

参数的作用 : 在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去。

函数参数的运用:

// 带参数的函数声明
function 函数名(形参1, 形参2 , 形参3...) { // 可以定义任意多的参数,用逗号分隔
  // 函数体
}
// 带参数的函数调用
函数名(实参1, 实参2, 实参3...); 
  1. 调用的时候实参值是传递给形参的
  2. 形参简单理解为:不用声明的变量
  3. 实参和形参的多个参数之间用逗号(,)分隔。
  4. 形参的个数可以和实参个数不匹配,但是结果不可预计,我们尽量要匹配
  5. 在JavaScript中,形参的默认值是undefined。
//实际的例子。实现一个算法,从用户输入值,获取两个值,对两个值先进行求和,再跟4取余;
alert("请输入第一个值");
var a = prompt();
alert("请输入第二个值");
var b = prompt();
var re;
var sum;
function remainder(num1,num2) {
  sum = num1 + num2;
  alert("求和的运算结果是:" + sum);

  re = sum % 4;
  alert("取余的运算结果是:" + re)
}

remainder(a,b);

3.函数的返回值

  • 一个函数内部,可以提供一个返回值,将得到的运算结果,传递给另一个函数进行进一步加工和处理
// return一下就可以了
// 声明函数
function 函数名(){
    ...
    return  需要返回的值;
}
// 调用函数
函数名();    // 此时调用函数就可以得到函数体内return 后面的值


//比如下面描述的以一个例子。
// 利用函数求数组 [5,2,99,101,67,77] 中的最大数值。这里你需要首先了解一下算法的概念

//所谓的算法就是解决某个问题的一种方法。

        function getArrMax(arr) { // arr 接受一个数组  arr =  [5,2,99,101,67,77]
            var max = arr[0];
            for (var i = 1; i <= arr.length; i++) {
                if (arr[i] > max) {
                    max = arr[i];
                }
            }
            return max;
        }
        // getArrMax([5, 2, 99, 101, 67, 77]); // 实参是一个数组送过去
        // 在我们实际开发里面,我们经常用一个变量来接受 函数的返回结果 使用更简单
        // var re = getArrMax([5, 2, 99, 101, 67, 77]);
        var re = getArrMax([3, 77, 44, 99, 143]);
        console.log(re);
  • 在使用 return 语句时,函数会停止执行,并返回指定的值
  • 如果函数没有 return ,返回的值是 undefined

4.总结一下前面学过的break,continue,和现在所学习到的return的区别

  • break :结束当前的循环体(如 for、while)
  • continue :跳出本次循环,继续执行下次循环(如 for、while)
  • return :不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码

5. arguments的使用

​ 当不确定有多少个参数传递的时候,可以用 arguments 来获取。JavaScript 中,arguments实际上它是当前函数的一个内置对象。所有函数都内置了一个 arguments 对象,arguments 对象中存储了传递的所有实参。arguments展示形式是一个伪数组,因此可以进行遍历。伪数组具有以下特点:

  • 具有 length 属性

  • 按索引方式储存数据

  • 不具有数组的 push , pop 等方法

    注意:在函数内部使用该对象,用此对象获取函数调用时传的实参。

6 .函数可以调用函数吗?

	函数内部可以调用另一个函数,在同一作用域代码中,函数名即代表封装的操作,使用函数名加括号即可以将封装的操作执行。

7. 函数的两种声明方式

  • 自定义函数方式(命名函数)

    利用函数关键字 function 自定义函数方式

    // 声明定义方式
    function fn() {...}
    // 调用  
    fn();  
    
    • 因为有名字,所以也被称为命名函数
    • 调用函数的代码既可以放到声明函数的前面,也可以放在声明函数的后面
  • 函数表达式方式(匿名函数)

    利用函数表达式方式的写法如下:

    // 这是函数表达式写法,匿名函数后面跟分号结束
    var fn = function(){...};
    // 调用的方式,函数调用必须写到函数体下面
    fn();
    
    • 因为函数没有名字,所以也被称为匿名函数
    • 这个fn 里面存储的是一个函数
    • 函数表达式方式原理跟声明变量方式是一致的
    • 函数调用的代码必须写到函数体后面

8.函数自己调用自己可行吗?

这是可以的。比如下面的实例代码

(function() {
            console.log("这是函数的自调用");
             }
)();//这个函数就是函数自调用
//解释:
var f1 = function(){
    console.log("你好!");
};
console.log(f1);
f1();
//解释:f1里面存储的就是函数代码,通过f1加()的方式调用,没有f1变量的时候,直接在代码后面加上()就可以调用,叫函数的自调用

9.什么是回调函数呢?

所谓的回调函数,就是函数作为参数进行调用。值得说明的是,这种回调,在实际工作中使用非常广泛和频繁。

//函数声明,fn是变量,fn也是参数
function f1(fn){
    fn();//函数调用----说明fn这个变量中存储的是一个函数
}
function f2(){
    console.log("函数可以作为参数使用");
}
f1(f2);//调用f1,将f2作为参数传进去
//结果:函数可以作为参数使用
原文地址:https://www.cnblogs.com/BM-laoli/p/12394109.html