函数
函数就是把特定功能的代码抽取出并进行封装,用来重复执行一些功能。
函数的作用:
- 函数可以重复某一部分代码(通过函数名调用)
- 使程序变得更简短而清晰
- 有利于程序维护
函数的定义(声明)
- 声明式
function 函数名(){} - 赋值式
var 变量 = function(){} - Function构造函数
new Function()(不推荐) 举例:var sum = new Function(‘num1’,’num2’,’return num1+num2’)
扩展:
- 声明提前
- Js函数里声明的所有变量(但不涉及赋值),都被“提前”至函数体的顶部。
- 声明式与赋值式存在的区别
函数的分类
- 内置函数 例如
alert() - 自定义函数
- 匿名函数
函数的执行
-
手动调用
sum()案例:封装a-b的随机数。掌握公共方法的封装方式。
-
事件驱动
元素.事件 = 函数名例如:buton.onclick = sum案例:显示隐藏图片
案例:随机验证码
作用域
定义
即能够使用某个变量的范围,分<全局作用域>和<局部作用域>
全局变量:在全局作用域下声明的变量,可以在任意地方中使用。
局部变量:在局部作用域声明的变量,只在函数中可以使用。
变量的访问规则
就近原则(如查找变量a)
- 使用变量a时先从当前函数查找,如果有则可以使用
- 如果当前函数无变量a,则往父级函数查找,如果找到则使用,并停止查找
- 如果在父级函数还是无法找到,则继续往上一层函数查找,以此类推
- 直到最顶层(全局作用域),如果还是没找到,则报错误not defined
作用域链
当函数访问变量时,根据就近原则从内到外查询变量,这个路径称为作用域链。
实参与形参
概念
- 形参:函数声明时的参数(变量)
- 实参:函数执行时的参数
形参和实参的数量可以不同
arguments
函数内部隐藏的对象(是一个类数组),保存着实参的信息
arguments.length实参的数量callee对函数本身的引用
案例:计算未知个数参数的加法
return 函数返回值
-
传参是将值传进函数内,return是将值返回到函数外
-
如果函数没有return,执行完后返回undefined
-
return终止函数的执行,即return后的代码不会执行
案例:计算函数的阶乘,封装成函数
函数中的this
函数中的this是一个关键字,表示当前对象,取决于谁调用了这个函数。