1.数组
(1)定义
数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整。
(2)通过数组字面量创建数组
// 创建一个空数组
var arr1 = [];
Var arr2 = new Array();
// 创建一个包含3个数值的数组,多个数组项以逗号隔开
var arr2 = [1, 3, 4];
// 创建一个包含2个字符串的数组
var arr3 = ['a', 'c'];
// 可以通过数组的length属性获取数组的长度
console.log(arr3.length);
// 可以设置length属性改变数组中元素的个数
arr3.length = 0;
(3)获取数组元素
[0] 是数组中的第一个元素。[1] 是第二个。数组索引从 0 开始。
// 格式:数组名[下标] 下标又称索引
// 功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。
var arr = ['red', 'green', 'blue'];
arr[0]; // red
arr[2]; // blue
arr[3]; // 这个数组的最大下标为2,因此返回undefined
(4)遍历数组
数组遍历的基本语法:
for(var i = 0; i < arr.length; i++) {
// 数组遍历的固定结构
}
(5)数组新增元素——push()
// 格式:数组名.push()
// 在数组最后添加新元素
var arr = ["red", "green", "blue"];
arr.push(“pink”);
翻转数组(arr.reverse())
数组转字符串:arr.join(“-”)
2.函数
(1)定义
把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数。
函数的作用就是封装一段代码,将来可以重复使用。
函数声明
function 函数名(){
// 函数体
}
如果两个函数都是函数的声明,且函数名相同,那么后边的函数会覆盖前边的——声明会预解析
函数表达式
var fn = function() { //fn相当于函数名
// 函数体
}
如果两个函数都是函数表达式,且函数名相同,函数的调用会调用最近的一个
(2)函数命名
规则
1.由字母、数字、下划线、$符号组成,不能以数字开头
2.不能是关键字和保留字,例如:for,while,this, name
3.区分大小写
规范
1.函数名必须有意义
2.遵守驼峰命名法
3.建议不要用$作为函数名
(3)函数调用
调用函数的语法:可以调用多次(重复使用)
函数名();
(4)函数的参数(实参和形参)
语法:
// 函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部
// 带参数的函数声明
function 函数名(形参1, 形参2, 形参...){
// 函数体
}
// 带参数的函数调用
函数名(实参1, 实参2, 实参3);
3.函数的返回值
局部作用域(函数内部)
全局作用域
全局声明的变量可用于局部,反之不可
(1)返回值
返回值语法:
//声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参...){
//函数体
return 返回值;
}
//可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3);
1、如果函数没有显示的使用 return语句 ,或者return后面没有任何值,那么函数有默认的返回值:undefined
2、如果函数使用 return语句,那么跟在return后面的值,就成了函数的返回值
3、函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。
推荐的做法是要么让函数始终都返回一个值,要么永远都不要返回值。
4.函数其他
(1)函数的内置对象(arguments)
arguments对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有的实参。arguments是一个伪数组,因此也可以进行遍历。可以拿到所有的参数。
arguments数组中前几个元素是函数的参数
callee属性:函数的本身
callee.name:函数的名字
length属性:实参的个数
callee.length:形参的个数
(2)匿名函数(自执行函数/立即执行函数)——一般放在网页头部广告,不用触发即执行
通过匿名函数的自调用的方式来执行
(function () {
alert(123);
})();
(3)函数是一种数据类型 (函数是引用数据类型)
所以可以把函数作为参数传入
(4)回调函数
主函数的事先干完,回头再调用传进来的那个函数。
//定义主函数,回调函数作为参数
function A(callback) {
callback();
console.log('我是主函数');
}
//定义回调函数
function B(){
//定时器 参数1是函数,参数2是时间
setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}
//调用主函数,将函数B传进去
A(B);
//输出结果
我是主函数
我是回调函数