- onclick:点击事件
- ondblclick:双击事件
- onmouseover:鼠标移入事件
- onmouseout:鼠标移开事件
- onchange:内容改变事件(一般用于表单元素)
- onkeyup:键盘按键弹起事件
函数
1.概念及好处
2.如何声明函数
(1)function关键字声明
①function函数名(形参){调用函数时执行的代码}
(2)赋值式
①var函数名 = function(形参){调用函数时执行的代码}
(3)构造函数(不常用)
①new function();
3.调用函数
(1)函数名()
(2)事件驱动
①onclick = “函数名()”
②id名.onclick = 函数名 (注意:函数名后不要跟括号)
③id名.onclick = function(){}
4.函数的分类
(1)自定义函数,声明函数
(2)匿名函数 function(){}
(3)内置函数
声明提前
-
在js代码执行之前,会将所有的声明提升到当前作用域的最顶端(相同作用域下,声明同一个 变量会发生覆盖)
-
按照代码的执行顺序,往下执行代码
备注:js代码一旦报错,下面的代码都会终止执行。 -
若使用赋值式声明函数,在函数赋值之前使用函数,会报错 ** is not a function。
备注:因为声明提前还没赋值,所以值为undefined,undefined不是函数。
若使用关键字function声明函数,能在函数声明代码的前面使用
//例:变量声明提前
var num; //(1)声明提前到最前面
console.log(num); //undefined
var num = 10; //拆分成两步
num = 10; //(2)在原位赋值
//备注:在变量声明之前使用变量(黄色部分声明并赋值,绿色部分是使用变量),则js代码会默认拆成(1)(2)部分。
作用域
- 概念:某个变量的使用范围,分成全局作用域及局部作用域
- (1) 全局变量:全局作用域下声明的变量(函数外声明的变量)
(2) 局部变量:局部作用域声明的变量(函数内声明的变量) - 变量的访问规则(就近原则)
(1) 在函数内查找变量a,若自己内部已经声明该变量,那么使用函数内的该变量
(2) 若在函数内找不到声明,往函数外一层找。若找到则使用,找不到继续往外找
(3) 直到找到全局作用域,找到则使用,还找不到则报错,a is not defined。 - 所用域链
当函数访问变量时,根据就近原则从内到外查询变量,这个路径称为作用域链。
函数的参数
- 形参:在函数声明时的参数(形参a相当于在函数内写了var a = 10;)
- 实参:在函数执行时的参数(实参传递的是值)
①实参与形参的个数可以不一致 - arguments 函数内部隐藏的对象,类数组,包含着所有实参的信息。
//利用arguments可以实现获取到所有的实参,进行任意的操作
function sum(){
var leng = arguments.length;
var res = 0;
for(var i=0;i<leng;i++){
res += arguments[i];
}
console.log(res);
}
sum(11,22,55,89,100);
函数返回值return
- return将函数内部的值返回到函数外,函数外若想使用,必须要接收该返回值
- return若不书写或者直接写return,函数的返回值为undefined
- return退出函数,当执行了return,函数后面的代码不再执行
This
- 指的是调用该函数的当前对象
(1)函数手动执行时,this为window
(2)事件驱动函数时,this为事件绑定的对象
递归
- 自己调用自己,记得设置临界点,return退出函数.
很容易进入死循环,报错Maximum call stack size exceeded
回调函数
- 函数a作为另一个函数b的参数传递,在b内部执行函数a