5、函数、声明提前、作用域及函数参数

一、函数

(一)概念及好处

1、函数就是把特定功能的代码抽取出并进行封装,用来重复执行一些功能。
2、使用函数的好处:
(1)函数可以重复某一部分代码(通过函数名调用)
(2)使程序变得更简短而清晰
(3)有利于程序维护

(二)如何声明函数

1. function关键字声明
function 函数名(形参){调用函数时执行的代码}
2. 赋值式
var 函数名 = function(形参){调用函数时执行的代码}    
3. 构造函数,不常用 ==> new Function();

(三)调用函数

1. 手动执行:函数名()
2. 事件驱动
(1)[onclick="函数名()"]
(2) ele.onclick = 函数名
(3)ele.onclick = function(){}

(四) 函数的分类

1.自定义函数,声明函数
2.匿名函数 function(){}
3.内置函数

二.声明提前

(一)在js代码执行之前,会将所有的声明提升到当前作用域的最顶端

(二)按照代码的执行顺序,往下执行代码

(1) 备注:js代码一旦报错,下面的代码都终止执行了。
(2) 若使用赋值式声明函数,在函数赋值之前使用函数,会报错 ** is not a function。因为声明提前还没赋值,所以值为undefined,undefined不是函数。
(3) 若使用关键字function声明函数,能在函数声明代码的前面使用
1 2 案例: jian();
3         function jian(){
4             console.log(888);
5         }

三、作用域

1.概念:某个变量的使用范围,分成全局作用域及局部作用域
2.分类:
(1)全局变量:全局作用域下声明的变量(函数外声明的变量)
(2)局部变量:局部作用域声明的变量(函数内声明的变量)
3.变量的访问规则(就近原则)
(1)在函数内查找变量a,若自己内部已经声明该变量,那么使用函数内的该变量
(2)若在函数内查找不到声明,往函数外一层查找。若找到则使用,找不到继续往外找
(3)直到找到全局作用域,找到则使用,还找不到则报错,** is not defined。
4. 作用域链
当函数访问变量时,根据就近原则从内到外查询变量,这个路径称为作用域链。

四.函数的参数

1、形参:在函数声明时的参数(变量)
2、实参:在函数执行时的参数(值)
备注: 实参与形参的个数可以不一致。
3、arguments 函数内部隐藏的对象,类数组,包含着所有实参的信息
1 案例:function sum(a,b,c){
2         var a = 1;
3         var b = 2;
4         var c = 3;
5         console.log(a+b+c);
6     }
7     sum(1,2,3);
4、利用arguments可以实现获取到所有的实参,进行任意的操作
原文地址:https://www.cnblogs.com/wulongke/p/10492850.html