03.函数

三、函数

3.1 了解函数

函数就是把特定功能的代码抽取出来并进行封装,用来重复执行一些功能,并起个名字(函数名)。函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行

  • 使用函数的好处,为什么要使用函数
  • 函数可以重复执行某一部分代码(通过函数名调用)
  • 使程序变得更简短而清晰
  • 有利于程序维护
  • 什么时候需要函数
  • 当相同的代码出现多次时
  • 当需要提取公共代码时
3.2 函数的定义
  • 关键字声明(声明式):
    格式:function 函数名(){}
function sum(){}

函数的声明会提前 ==> 解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);

  • 函数表达式(赋值式)
var sum = function(){}
  • 匿名函数:
    没有名字的函数就叫匿名函数
function(){}
3.3 函数的执行
  1. 手动调用:
    sum();
  2. 事件驱动:
    格式:元素.事件 = 函数名;
    buton.onclick = sum;
3.4 声明提前
  • 函数声明提前
  • 变量声明提前
    声明但没有赋值的变量默认为undefined
function test(){
    console.log(a);
    var a=20;
}
test() ==> 会得到什么信息?
3.5 作用域

俗称“使用范围”,即能够使用某个变量的范围,分<全局作用域>和<局部作用域>

  • 全局变量与局部变量
    • 全局变量:在全局作用域下声明的变量,可以在任意地方中使用,作用范围比较大,我们称为全局变量
    • 局部变量:在函数内(局部作用域)声明的变量,只在函数中可以使用,作用范围较小,我们称之为局部变量
  • 变量的访问规则
    • 就近原则(如查找变量a):
      • 使用变量a时先从当前函数查找,如果当前函数有变量a则使用;
      • 如果当前函数无变量a,则往父级函数查找,如果找到则使用,并停止查找;
      • 如果在父级函数还是无法找到,则继续往上一层函数查找,以此类推,直到最顶层(全局作用域),如果还是没找到,则报not defined错误;
    • 作用域链:每个函数在定义时就形成了局部作用域,如果存在多个函数嵌套,他们之间就会建立起某种联系,直到全局作用域,这种联系称之为作用域链。当函数访问变量时,根据就近原则在这个作用域链中从内到外查询变量。
3.5.1 闭包

闭包是js开发惯用的技巧,什么是闭包?闭包指的是:能够访问另一个函数作用域的变量的函数。清晰的讲:闭包就是一个函数,这个函数能够访问其他函数的作用域中的变量。eg:

function outer() {
     var  a = '变量1'
     var  inner = function () {
            console.info(a)
     }
    return inner    // inner 就是一个闭包函数,因为他能够访问到outer函数的作用域
}
3.6 函数的参数
  • 形参,就是局部变量
  • 形参与实参的区别:
    • 形参:声明函数时圆括号内定义的变量
    • 实参:函数执行时传入的参数
      形参和实参的数量可以不同
  • arguments
    函数内部隐藏的对象(是一个类数组),保存着实参的信息
    • length: 实参的数量
    • 了解索引值
      • 读取值
  • 回调函数:函数作为参数传递 eg:
//注意到click方法中是一个函数而不是一个变量
//它就是回调函数
$("#btn_1").click(function() {
    alert("Btn 1 Clicked");
});  
//或者
function click() { // 它就是回调函数
    alert("Btn 1 Clicked");
}
$("#btn_1").click(click);  
3.7 函数返回值
  1. 终止函数的执行,return后的代码不会执行
  2. return后如果有值,则把这个值返回到函数执行的地方
    如果函数没有return,执行完后返回undefined
3.8 函数中的this

函数中的this是一个关键字,表示当前对象,而当前对象是谁,取决于谁调用了这个函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值