函数2

# 函数2 #

### 函数提升 ###
console.log(addnum);
function addnum(a,b){
return a+b;
}
函数和用var申明变量一样,也存在提升

只要不用var声明就不会产生全局变量
###1,函数申明
function addnum(a,b){
return a+b;
}

- 在使用函数申明的时候,注意两点,
>- 1,嵌套函数的申明,举例

function add(){
console.log(165);
function add2(){
console.log(111);
}
add2();
}add();

>- 2,函数和变量名相同时,会被覆盖


###2,函数表达式
简单来说,就是把函数赋值给一个变量,或者说是让变量储存这个函数;

 

###3,命名函数表达式

和上面的函数表达式基本一样,只是这个函数给了明确的名称;


###4,立即执行函数表达式

- 立即执行函数表达式;也称(iife)(Immediately-Invoked Function Expression);函数不用调用,就执行;


##3 参数
- 我们在最开始说函数就说了,参数,函数在进行计算时候,需要的条件值,就是参数。
- 参数分实参和形参。
- 实参就是实际传入的参数(调用),形参是申明函数时传入的参数,亦可作为函数的局部变量使用。

 

- 值传递
- 参数基本类型(number,boolean,string);
- 如果参数是复杂数据类型,那么会引起作用的反射;


###arguments对象
- arguments对象是和函数紧密结合在一起的,可以算是函数的一个属性argument,为当前执行的函数对象返回一个arguments对象;是一个伪数组。拥有一些数组的特性,比如有length属性,还可以通过下标去获取里面的参数值,也可以通过for来遍历,但它没有数组的方法。


aguments对象,是一个假的数组。它并不能使用数组的方法。如果我们需要使用这些方法,是不是还是
需要更多的代码来实现。而在我们es6中,提供了一个简单的获取全部参数方法,并且会把参数转化成真的数组。既然是真的数组,那么数组的方法,它都可以使用。
###不定参数 或者说剩余参数 自定义一个标识符,在前面加上三个点(...)

 

###作用域

作用域(scope)指的是变量存在的范围。

这个作用域的范围确定,主要是我们的函数

申明函数后,在函数内部,进行的变量申明和函数,在函数外面是找不到的,我们称之为局部变量;比如我们的小名,在家里人,都知道,但是在外面。是不是就不知道。与之相反,就是在函数外面进行申明,这个就是全局变量。不使用var申明,会产生全局变量

posted @ 2017-09-10 11:01  刘畅A  阅读(129)  评论(0编辑  收藏  举报