本章的内容
本章的总体思路,围绕着数组展开。
数组Arry
一、数组是是?它有几种创建方式?
1.数组是什么?
- 数组是一组相关的数据集合。可以把一组相关的数据一起存放,并提供方便的访问(获取)方式。
- 数组是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。数组是一种将一组数据存储在单个变量名下的方式。
2.数组的创建方式
一共有两种方式。new一个,还有一种是字面量的方式。
- new一个,
var 数组名 = new Array() ; var arr = new Array(); // 创建一个新的空数组
字面量的方式
//1. 使用数组字面量方式创建空的数组 var 数组名 = []; //2. 使用数组字面量方式创建带初始值的数组 var 数组名 = ['大明','小陈','小张','老李']; //3.在数据中可以放任意类型 var 数组名 = [0,true,'小张',13213];
这种字面量方式也是我们以后最多使用的方式,也是在开发中常用的
### 二。如何访问数组中的元素?
### 1.使用索引(下标)进行访问。
- 需要注意的是这里的索引是从0开始的。
// 定义数组 var arrStus = [1,2,3]; // 获取数组中的第2个元素 alert(arrStus[1]); //这里获取的是值是 2 alert(arrStus[6]); //访问时数组没有和索引值对应的元素,则得到的值是undefined
2.有没有更快的访问方式?
- 我们可以通过遍历的方式。一下子把数组的数组全拿出来。这个在实际的开发中,非常常用。
- 使用for循环!
var arr = ['red','green', 'blue']; for(var i = 0; i < arr.length; i++){ console.log(arrStus[i]); }
- 这个代码里面的arr.length 指的是数组的长度,
- 当我们数组里面的元素个数发生了变化,这个 length 属性跟着一起变化
数组的length属性可以被修改:
- 如果设置的length属性值大于数组的元素个数,则会在数组末尾出现空白元素;>就增加
- 如果设置的length属性值小于数组的元素个数,则会把超过该值的数组元素删除,<就删除
三、如何新增元素呢?
我们通过一个简单的实例代码,很容易的就可以明白了。
- 实现的原理就是:在数组的末尾插入新元素:
数组[ 数组.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...);
- 调用的时候实参值是传递给形参的
- 形参简单理解为:不用声明的变量
- 实参和形参的多个参数之间用逗号(,)分隔。
- 形参的个数可以和实参个数不匹配,但是结果不可预计,我们尽量要匹配
- 在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