# 函数

### 一、函数的概念

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

**目的:让大量代码重复使用**

#### 1.声明函数

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

**注意:函数名一般是动词**

#### 2.调用函数

```javascript
函数名();
```

### 二、函数的参数

#### 1.形参和实参

``` javascript
function 函数名(形参1,形参2,...){}
函数名(实参1,实参2,...);
```

形参是形式上的参数,实参是实际上的参数。

形参是接受实参的,形参类似于一个变量。

举个例子!

```javascript
function eat(aru){
console.log(aru)
}
eat('番茄');
```

例子中,aru就是形参,番茄是实参。

#### 2.形参和实参个数不匹配的问题

若形参个数少于实参个数,则取到形参的个数。

如形参个数多于实参个数,则多余的形参定义为undefined。

接下来举一个形参多于实参的例子!

```javascript
function sum(num1,num2){
console.log(num1+num2);
}
sum(1);
```

输出结果为:NaN(Not a Number)

### 三、函数的返回值

#### 1.return语句

```javascript
function test(){
return 需要返回的结果;
}
```

test=return后面的结果

#### 2.return终止函数

return后面的代码不会被执行

return语句只能返回一个值,如果有多个值则返回最后一个值

例如:return 1,2,3;则返回值为3.

若函数没有return语句,则返回undefined。

### 四、arguments的使用

arguments是一个伪数组

arguments里面储存了所有传递过来的实参,只有函数才有arguments对象,而且是每个函数都内置好了这个arguments

**伪数组并不是真正意义上的数组**

*具有数组的length属性*

*按照缩印的方式存储*、

*它没有真正数组的一些方法*

### 五、函数的两种声明方式

#### 1.利用函数关键字自定义函数(命名函数)

(前面声明函数写过了)

#### 2.函数表达式(匿名函数)

```javascript
var fun=function(){};
fun();
```

**注意:fun是变量名,不是函数名!!!**