从初中开始,函数就已经出现了,好不容易毕业了,还被函数卡着脖子,这感觉真是。。。。
一、函数的作用
让代码可以复用,提高代码的利用率
二、函数的声明方式
1、函数的声明语句
function fun () {
//函数主题代码
}
2、函数的表达式
var fun = function () {
//函数体
}
三、函数的调用
函数代码执行需要使用函数调用操作
fun();//函数名为fun
四、函数的参数
1、当一个函数内的某些值不确定时可以设置参数
2、形参:书写在函数体的小括号中,用于占位置,多个参数使用逗号分隔
3、实参:书写在函数调用的小括号中,当函数调用后,会将实参值赋给对应的形参
五、函数的返回值
1、原因:在函数外面无法操作函数内声明的变量,得不到函数计算的结果
2、方式:在函数中设置return值,并通过函数调用进行接收
3、return :return具备结束函数的功能,即跳出函数;也可以单独使用,即不设置返回值,仅仅进行跳出函数操作;默认值为undefined
六、作用域
1、作用域表示起作用的范围
2、全局作用域:不在任何函数内。声明在全局作用域中的变量为全局变量,在任意位置均可访问。隐式声明全局变量:任意位置不加var的变量赋值操作
3、局部作用域:可以在任何函数内。声明在局部作用域中的变量为局部变量,只能在声明这个变量的作用域内部访问。
4、作用域的访问规则
七、预解析
1、每个作用域代码执行前都会执行与解析操作,这是js自动完成的
2、查找当前作用域中的var变量声明,将声明提升到当前作用域顶端,赋值保留在原位置
3、查找当前作用域中的函数声明语句,将函数体整体提升到当前作用域顶端,调用保留在原位置
4、由于函数声明语句是整体提升,所以在书写位置前后调用均可执行
5、函数表达式只能在书写位置之后进行调用
八、函数的分类
1、基本函数
function fun () {}
var fun1 = function () {};
2、匿名函数
匿名函数没有函数名,所以不能单独使用
var fun = function () {};
3、立即执行函数(自调用函数)
1、效果:在书写位置执行一次
2、作用:进行作用域的包裹,减少全局变量的使用
3、使用位置:在每个功能外,使用立即执行函数包裹即可
4、注意点:立即执行函数后必须添加分号;
(function () {
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log('这是一个立即执行函数。');
})();
4、回调函数(将函数作为参数使用)
1、将函数作为参数使用,需要传入的是函数体,所以一定不能在传参时进行调用
2、 使用场景:当一个函数中的某些功能代码不确定时,可以使用函数参数(起到对代码包裹传入的作用)。
5、将函数作为返回值
6、递归函数
函数内调用当前函数
var count = 0;
function fun () {
if (count >= 10) {
return;
}
console.log('这是函数fun的代码');
count++;
fun();
}
fun();
九、arguments的使用
1、用于获取某个函数本次调用时传入的所有实参
2、具有索引和长度,是伪数组结构,没有数组的方法