1 - 数组
1.1 数组的概念
数组是指一组数据的集合,是一个有序的列表,其中的每个数据被称作元素,在数组中可以存放任意类型的元素,并且数组的长度可以动态的调整。数组是一种将一组数据存储在单个变量名下的优雅方式。
1.2 创建数组
- JS 中创建数组的方式
// 利用 new 创建一个新的空数组
var arr = new Array();
// 使用数组字面量方式创建空的数组 (最常用)
var 数组名 = [];
// 使用数组字面量方式创建带初始值的数组
var 数组名 = ['小白','小黑','大黄','瑞奇'];
- 数组元素的类型
数组中可以存放任意类型的数据,例如字符串,数字,布尔值等,这个和其他语言不一样,比如OC中的数组只能存放对象。
var arrStus = ['小白',12,true,28.9];
1.3 索引 (下标)
索引 (下标) :用来访问数组元素的序号(数组下标从 0 开始)。

数组可以通过索引来访问、修改对应的数组元素,访问元素的格式为:数组名[下标]
,修改元素的格式为:数组名[下标] = 新值
// 获取数组对应下标的那个值,如果下标不存在,则返回undefined。
var arr = ['red', 'green', 'blue'];
console.log(arr[0]); // red
console.log(arr[2]); // blue
console.log(arr[3]); // 这个数组的最大下标为2,因此返回undefined
// 修改对应的数组元素
arr[0] = 'yellow';
console.log(arr[0]); // 修改后的元素为:yellow
1.4 遍历数组
- 可以通过 for 循环索引遍历数组中的每一项。
var arr = ['red','green', 'blue'];
for(var i = 0; i < arr.length; i++){
console.log(arrStus[i]);
}
- 数组的长度,表示数组中元素的个数,使用
数组名.length
可以访问数组元素的个数。当我们数组里面的元素个数发生了变化,这个 length 属性跟着一起变化。
var arrStus = [1,2,3];
alert(arrStus.length); // 3
- 数组的length属性可以被修改(这个不同于 OC,OC 数组的 length 只能读取)。
① 如果设置的length属性值大于数组的元素个数,则会在数组末尾出现空白元素。
② 如果设置的length属性值小于数组的元素个数,则会把超过该值的数组元素删除。
③ 如果设置的length属性值为0,则清空数组。
1.5 数组中新增元素
数组中可以通过以下方式在数组的末尾插入新元素:
数组[数组.length] = 新数据;
2 - 函数
2.1 函数的概念
函数就是封装了一段可被重复调用执行的代码块,通过此代码块可以实现大量代码的重复使用。
2.2 函数的使用
① 声明函数
- function 是声明函数的关键字,必须小写。
- 由于函数一般是为了实现某个功能才定义的,所以通常我们将函数名命名为动词,比如 getSum。
函数的两种声明方式:
1. 命名函数
利用函数关键字 function 自定义函数方式
// 声明定义方式
function fn() {...}
// 调用
fn();
- 因为有名字,所以也被称为命名函数
- 调用函数的代码既可以放到声明函数的前面,也可以放在声明函数的后面
2. 匿名函数
利用函数表达式方式的写法如下:
// 这是函数表达式写法,匿名函数后面跟分号结束
var fn = function() {...};
// 调用的方式,函数调用必须写到函数体下面
fn();
- 因为函数没有名字,所以也被称为匿名函数
- 这个fn 里面存储的是一个函数
- 函数调用的代码必须写到函数体后面
② 调用函数
函数名(); // 通过调用函数名来执行函数体代码
调用的时候千万不要忘记添加小括号,声明函数本身并不会执行代码,只有调用函数时才会执行函数体代码。
③ 函数的封装
函数的封装是把一个或者多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口

例子:封装计算1-100累加和
// 声明函数
function getSum(){
var sumNum = 0;// 准备一个变量,保存数字
for (var i = 1; i <= 100; i++) {
sumNum += i;// 把每个数值 都累加 到变量中
}
alert(sumNum);
}
// 调用函数
getSum();
2.3 函数的参数
① 函数参数语法
形参:函数定义时设置接收调用时传入
实参:函数调用时传入小括号内的真实数据

参数的作用 : 在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去。
函数参数的运用:
// 带参数的函数声明
function 函数名(形参1, 形参2 , 形参3...) { // 可以定义任意多的参数,用逗号分隔
// 函数体
}
// 带参数的函数调用
函数名(实参1, 实参2, 实参3...);
② 形参和实参数量不匹配时

- 函数可以带参数也可以不带参数
- 声明函数的时候,函数名括号里面的是形参,形参的默认值为 undefined
- 调用函数的时候,函数名括号里面的是实参
- 多个参数中间用逗号分隔
- 形参个数可以和实参个数不匹配,不会报错,这也是和其他语言不一样的地方,但是结果不可预计,我们尽量要匹配
2.4 函数的返回值
函数执行完成后可以通过return语句将指定数据返回。
// 声明函数
function 函数名(){
...
return 需要返回的值;
}
// 调用函数
函数名(); // 此时调用函数就可以得到函数体内return 后面的值
在使用 return 语句时,函数会停止执行,并返回指定的值。如果函数没有 return,返回的值是 undefined。
continue、break、return 的区别:
continue :跳出本次循环,继续执行下次循环(如 for、while)
break :结束当前的循环体(如 for、while)
return :不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码
2.5 arguments的使用
当不确定有多少个参数传递的时候,可以用 arguments 来获取。JavaScript 中,arguments实际上它是当前函数的一个内置对象,所有函数都内置了一个 arguments 对象,arguments 对象中存储了传递的所有实参。arguments展示形式是一个伪数组,因此可以进行遍历。
伪数组具有以下特点:
- 具有 length 属性
- 按索引方式储存数据
- 不具有数组的 push , pop 等方法
使用arguments可以实现类似swift中可变参数的效果,如下:
// 求任意个数的和
function getSum() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
// 求几个数就传几个数
var sum = getSum(5, 1, 3, 4);
console.log(sum);
2.6 函数是一种数据类型
function fn() {}
console.log(typeof fn); //function类型
- 函数作为参数
因为函数也是一种类型,可以把函数作为参数,在另一个函数中使用。
- 函数作为返回值
因为函数是一种类型,所以也可以把函数作为返回值从函数内部返回。
function fn(b) {
var a = 10;
return function () {
alert(a+b);
}
}
fn(15)();
网友评论