- 函数的定义及好处
(1)函数就是把特定功能的代码抽取出并进行封装,用来重复执行一些功能。
(2)使用函数的好处:
函数可以重复某一部分代码(通过函数名调用)
使程序变得更简短而清晰
有利于程序维护
- 函数的定义
- 关键字function声明(声明式):
格式:function 函数名(){} - 函数表达式(赋值式)
格式:var 变量 = function(){}
- Function构造函数(不推荐)
var sum = new Function(‘num1’,’num2’,’return num1+num2’);
- 声明提前的概念
- 声明式与赋值式存在的区别
- 函数的分类
内置函数 alert()
自定义函数
匿名函数
- 总结函数声明的注意事项
- 函数的执行
- 手动调用:
sum(); - 事件驱动:
格式:元素.事件 = 函数名;
buton.onclick = sum;
- 案例:封装a-b的随机数
- 常用事件
- onclick:点击事件
- ondblclick:双击事件
- onmouseover:鼠标移入事件
- onmouseout:鼠标移开事件
- onchange:内容改变事件(一般用于表单元素)
- onkeyup:键盘按键弹起事件
- 案例:显示隐藏图片
- 案例:移出移入换小姐姐
- 案例:随机验证码
- 作用域
(1)定义
即能够使用某个变量的范围,分<全局作用域>和<局部作用域>
(2)全局变量与局部变量
全局变量:在全局作用域(函数外)下声明的变量,可以在任意地方中使用。
局部变量:在局部作用域(函数内)声明的变量,只在函数中可以使用。
(3)变量的访问规则
就近原则(如查找变量a):
* 使用变量a时先从当前函数查找,如果有则可以使用;
* 如果当前函数无变量a,则往父级函数查找,如果找到则使用,并停止查找;
* 如果在父级函数还是无法找到,则继续往上一层函数查找,以此类推;
* 直到最顶层(全局作用域),如果还是没找到,则报错误not defined;
(4)作用域链
当函数访问变量时,根据就近原则从内到外查询变量,这个路径称为作用域链。
- 函数的实参与形参
(1)形参与实参的区别:
形参:函数声明时的参数(变量)
实参:函数执行时的参数
注意:形参和实参的数量可以不同
- arguments
函数内部隐藏的对象(是一个类数组),保存着实参的信息
arguments.length: 实参的数量
callee: 对函数本身的引用
- 案例:计算未知个数参数的加法
- 传参是将值传进函数内,return是将值返回到函数外
- 如果函数没有return,执行完后返回undefined
- return终止函数的执行,即return后的代码不会执行
- 案例:计算函数的阶乘,封装成函数