JS第三天:函数

174 阅读2分钟

函数

函数就是把特定功能的代码抽取出并进行封装,用来重复执行一些功能。

函数的作用:

  • 函数可以重复某一部分代码(通过函数名调用)
  • 使程序变得更简短而清晰
  • 有利于程序维护

函数的定义(声明)

  • 声明式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是一个关键字,表示当前对象,取决于谁调用了这个函数。