一、概念
- 将反复使用的功能代码,(封装)成一个独立的模块,这个模块称为函数;
2.优点:一次封装,多次使用(增加代码的复用度)使程序更加可控;
3.函数的分类
function:
- 内置(内建、库、系统)函数;
- 自定义函数;
- 函数的类型: function
二、函数的声明
- 语句定义(声明式) 在任意位置都可调用
function 函数名([参数]){
功能
}
2.表达式定义法(赋值式) 只能先声明,后调用
var 变量名= function([参数]){
功能
}
三、函数的调用
一般调用:函数名([参数]);
事件调用:当触发;
四、函数的参数
1.实际参数(实参);调用函数时传递的参数,实际给的变量可以是多个;
- 实参可以是变量,常量,表达式;
- 实参数量大于形参数量时,多余的实参自动省略;
- 实参数量小于形参数量,多余的形参值为undefined;
- 传参时,只能由实参传递给形参,即单向传递;
- 形式参数(形参):定义函数时接收数据的参数只能是变量(别人给);
五、函数的返回值
return 函数的返回默认值为undefined
- 将结果返回到调用函数的地方;
- 结束函数;
六、事件
- 常用事件 onload:加载事件
onfocus:聚焦事件;
onblur:失焦事件;
onchange:改变事件;
onclick:单击事件;
ondblclick:双击事件;
onmousedown:鼠标按下事件;
onmouseup:鼠标弹起事件;
onmousecenter:鼠标移入事件;
onmouseleave: 鼠标移出事件;
onlouseover: 鼠标移入事件;
onmouseout:鼠标移出事件;
onmousemove:鼠标移动事件;
onkeydown:键盘按下事件;
onkeyup:键盘弹起事件;
onkeypress: 键盘按过事件;
七、事件与函数的关系
- 先获取页面中所操作的元素对象;
- 实现功能;
- 添加事件;
八、作用域及作用域链
作用域:作用的范围;
进入作用域:浏览器启动,js解析器;
- 如果找到var,则提取后面变量名,并给它初始化一个undefined的值;
- 如果找到function则提取函数名放在内容中,并将整个函数块赋值给她;
- 如果变量与函数同名时,则丢变量,保函数;
- 如果有多个script则从上到下逐行读代码;
作用域
- 全局作用域 script作用域,也叫做全局作用域,声明在全局作用域中的变量叫做全局变量,作用范围在整个页面,生存周期与页面同寿,同时也是window对象的属性;
- 函数作用域(局部作用域) 声明在局部作用域中的变量,叫做局部变量,作用范围在当前作用域中,生命周期函数,调用函数时产生,不调用时结束;
- 局部变量:在函数中以var关键字定义的变量就叫做局部变量,局部变量只能在所在的函数内部有效;
- 全局变量:可以整个脚本域中有效的变量
- 作用域链:子作用域如果没有,则向父作用域查找,父作用域也没有,向父级的父级作用域查找
- 如果子级作用域中没有找到变量时作用域链向父级寻找,父级也没有,但表达式为赋值表达式时,会是赋值表达式在全局作用域中自动生成该变量;
递归函数: 自己调用自己的过程
本质:循环(从哪里开始,到哪里结束,步长)
匿名函数(为了解决命名冲突)
- 将匿名函数赋值给一个变量;
- 绑定给事件;
- 自我调用;
(function(){
alert()
})()
匿名函数传参
(function(a,b){
return a+b
})(3,4)
构造函数
对象(object/物体):一切具有本质特征和行为的事物;
属性: 本质特征 === 变量
方法: 行为 === 函数
类:相同的对象 具有相同属性和方法的集合,抽象出来的概念,不存在的。
如何创建对象:
- 字面量方式:{} 直接 var obj={name:xx, age:""};
- var object=() 内置构造函数;
- new 自定义构造函数 可以批量创建同类型的对象;
instanceof:判断 一个对象是否属于某一类,返回布尔值;
如何访问对象中属性和方法
- 对象.属性 对象.方法();
- 对象["属性"] 对象"方法";
接下来进入数组=>