一、函数概述

  1、概述

    把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数,起个名字(函数名),在后续开发中可以反复调用函数的作用就是封装一段代码,将来可以重复使用。

    在JavaScript中,函数也作为一种数据类型存在,而且是引用数据类型,函数名就是指向其内存空间地址的引用。

    Demo:

1 var a = function() {
2     return 2;
3 };
4 var b = a;
5 a.fname = "tom";
6 alert(b.fname); //结果为tom

 

二、使用函数

  1、函数的定义

    a、函数声明

     语法格式

function 函数名(){
  // 函数体
}

    b、函数表达式(匿名函数)

     语法格式

var fn = function() {
  // 函数体
}

      注意

      •  只定义函数并不会执行,只有当函数被调用才会执行;
      •     函数命名使用 动词+名词 的格式,表示做一件事情。
      •     在 Java 中函数(方法)允许重载,但是在 JS 中函数的重载会直接覆盖掉上一次的定义,即不允许重载。

  2、函数的调用

    语法格式:

函数名(实际参数列表);

         注意:函数体只有在调用的时候才会执行,可以调用多次,重复使用,调用JavaScript函数时系统不检查传入参数的个数和类型

  3、函数的参数

    函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部。

    带参数的函数声明 语法格式

function 函数名(形参1, 形参2, 形参...){
  // 函数体
}

     带参数的函数调用 语法格式:

函数名(实参1, 实参2, 实参3);

     a、形参与实参

     形式参数:在声明一个函数的时候,为了函数的功能更加灵活,有些值是固定不了的,对于这些固定不了的值。我们可以给函数设置参数。这个参数没有具体的值,仅仅起到一个占位置的作用,我们通常称之为形式参数,也叫形参。

     实际参数:如果函数在声明时,设置了形参,那么在函数调用的时候就需要传入对应的参数,我们把传入的参数叫做实际参数,也叫实参。

      b、

    扩展:当传入的参数为基本数据类型时,在函数内部改变形参的值,并不会影响外部实参的值。

  4、函数的返回值

    当函数执行完成后,期望函数给一些反馈进行后续的运算,这个时候就需要函数的返回值。

    a、返回值语法

//声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参...){
  //函数体
  return 返回值;
}

//可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3);

    b、注意事项

      •  如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
      •    如果函数使用 return语句,那么跟再return后面的值,就成了函数的返回值
      •    如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined
      •    数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。

三、函数的 arguments 隐形参数

  JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有的实参。arguments是一个伪数组(类似于Java中的可变长参数,因此及可以进行遍历。

  Demo:

 1   // 求任意个数的和
 2     function getSum() {
 3       var sum = 0;
 4       for (var i = 0; i < arguments.length; i++) {
 5         sum += arguments[i];
 6       }
 7       return sum;
 8     }
 9 
10     var sum = getSum(5, 1, 3, 4);
11     console.log(sum);

 

总结:

  (1)方法定义是,形参的类型不用写,返回值类型也不写。

  (2)方法是一个对象,如果定义名称相同的方法,会覆盖

  (3)在JS中,方法的调用只与方法的名称有关,和参数列表无关

  (4)在方法声明中有一个隐藏的内置对象(数组),arguments,封装所有的实际参数

 

posted on 2019-08-11 08:43  格物致知_Tony  阅读(217)  评论(0编辑  收藏  举报