一.概述

1.函数就是封装了一段可以重复执行调用的代码块

2.目的:增加复用性

二.函数的使用

1.使用步骤:声明函数和调用函数

2.函数的声明:

(1)格式:function 函数名(){}
(2)函数名最好见名知意
(3)函数名括号内是参数列表
(4)还可以通过var 变量名 = function(){}来声明函数

  • 就是声明一个匿名函数,然后赋值给变量

    3.函数的调用:

    (1)格式:函数名();
    (2)有参数的话就在括号内传入参数
    (3)函数也可以在调用函数

    4.函数的封装:把一个或多个功能通过函数的方式封装起来,对外只提供一个简单的函数接口

    5.立即执行函数:

    (1)立即执行函数就是匿名函数用括号包起来,并在后面加上()
    (2)例如:(function(){alert(“hello”)})()或(function(a,b){alert(“a+b=”+a+b)})(123,456)
    (3)立即执行函数一般情况下只能运行一次

    三.函数的参数

    1.声明函数的括号里是形式参数

    2.调用函数的括号里是实际参数

    3.函数可以有参数(一个或多个),也可以没有

  • 多个参数逗号隔开

    4.参数由实参传给形参

    5.实参个数 = 形参个数:正常输出

    6.实参个数 > 形参个数:会取到与形参个数相等的参数

    7.实参个数 < 形参个数:多余的形参定义为undefined 最终结果为NaN

    (1)如果return后不跟任何值或变量,只返回undefined
    (2)函数不写return,会返回undefined

    四.函数的返回值

    1.函数用来实现功能,最终的结果要返回给函数的调用者

    2.函数遇到return 就会把结果返回给调用者

    3.return后的语句就不会执行

    4.return只能返回一个值 如果用逗号隔开多个值,会以最后一个为准

    5.函数没有返回值,会返回undefined

    五.arguments的使用

    1.当不知道有多少参数传递时,可以用arguments来获取

    (1)arguments实际上当前函数的一个内置对象。所有函数都内置了arguments对象,其中存储了传递的所有实参

    2.使用:

    (1)是一种伪数组:具有数组的length属性,并且按照索引方式来存储
    (2)可以用数组遍历

    六.this

    1.解析器调用函数时会向函数内部传递一个隐含的参数-this

    2.this指向的是一个对象,我们称这个对象为上下文对象

    3.根据函数的调用方式不同,this会指向不同的对象:

    (1)以函数形式调用:this永远都是window
    (2)以方法形式调用:this就是调用方法的那个对象

    4.call()和apply()方法:

    (1)作用:调用函数,和函数名()一样的效果
    (2)使用这两个方法,在括号里可以设置this的指向

  • 函数名.call(obj) this指向obj

  • 函数名.apply(a) this指向a