*****Function的基础
1、概念:
Function - 函数,也称之为方法,先【预定义】好,以后可以【反复使用】的【代码段】
2、如何使用函数:2步
1、定义/创建/声明:
function 函数名(){
函数体/代码段;
}
2、调用函数:2种
1、在JS内部写:函数名() - 程序员写几次就会调用几次
2、在HTML页面上绑定事件:
<elem onclick="函数名()"></elem> - 任何元素都可以绑定点击事件
3、我们以后何时使用函数呢?
1、不希望打开页面立刻执行
2、希望由用户来触发 - 提升用户的体验感
3、以后每一个独立的功能(作业)都要封装为一个函数
4、函数的地位很高,是第一等公民地位
带参数的函数:2步
1、创建出带有形参的函数:其实就是一个变量,只不过不需要写var,而且不需要赋值,所以称之为叫做形式参数,简称形参
function 函数名(形参,...){
函数体/代码段;
}
2、使用带参数的函数时,记得要必须传入实参 - 实际参数,就是你传递过去的值!
函数名(实参,...)
注意:传参的时候顺序是不能乱的,必须和形参的顺序一一对应上,数量也不要多也不要少
总结:没有谁好谁坏这种说法
1、不带参数的函数,用于执行一些固定操作
2、带参数的函数,可以根据我们传入的实参的不同,执行的操作略微不同
3、*****自定义函数Function:
如何使用:
1、***创建:2种 - 其实三种
1、*【声明方式】创建函数
function 函数名(形参列表){
函数体;
return 返回值;
}
2、【直接量方式】创建函数:
var 函数名=function(形参列表){
函数体
return 返回值;
}
感觉到函数名其实就是一个变量名,函数名要尽量的不重复,否则后面的会把前面的给覆盖掉
4、调用:var result=函数名(实参列表);
//其实return的本意其实是退出函数,但是如果return后面跟着一个数据
//顺便将数据返回到函数作用域的外部,但是return只负责返回不负责保存,所以调用函数时,需要拿一个变量去接住返回值
//就算省略return,默认其实也有return,会悄悄的给你return一个undefined,建议有返回值才拿变量接住,如果不需要返回值,直接不用接
//*具体需不需要得到函数的结果,看你自己:如果有一个你在全局希望拿着函数的结果去做别的操作,那么就要记得到加return
//前辈们提供给你的方法,大部分基本都加了return
5、***作用域:2种
1、全局作用域:全局变量 和 全局函数,在页面的任何一个位置都可以使用
2、函数作用域:局部变量 和 局部函数,只能在【函数调用时,内部可用】
带来了变量的使用规则:优先使用局部的,局部没有找全局,全局没有就报错
特殊点:缺点:
1、局部可以使用全局的,但是全局不能使用局部的,解决:看上面,加return
2、千万不要在函数中对着未声明的变量赋值 - 全局污染:全局本身没有这个东西,但是函数作用域却给添加上了,降低网页的性能!
6、**声明提前 - 只会出现在笔试之中
原理:在程序正式执行以前,会将var声明的变量(轻)和function声明的函数(重),都会悄悄的提前到当前作用域的顶部,但是赋值留在原地
强调:
声明方式创建的函数会完整的提前(第一种)
直接量方式创建的函数不会完整提前,只有变量名部分会提前(第二种)
何时使用:永远不会自己使用,干扰我们的判断 - 只会出现在笔试之中,为什么平时开发不会遇到呢?
只要你遵守以下规则:
1、先创建后使用
2、变量名和函数名尽量的不要重复
7、自动释放
函数内部的变量,都会在函数执行完毕后,自动释放,意味着我们根本不需要自己写xx=null;
8、***重载:
同的函数名,根据传入的实参的不同,自动选择对应的函数去执行,但是JS不支持,如果函数名重复了,后面的肯定会覆盖前面的
目的:减轻我们程序员的压力,记住一个方法就可以执行很多的操作
解决:在【函数内部】自带一个arguments的对象(类数组对象),不需要我们去创建的
作用:哪怕没有写任何形参,它也可以接受住所有的实参,
固定套路:
1、通过下标去获取传入的某一个实参:arguments[i] - i下标是从0开始的!
2、通过length去获取到到底传入了几个实参:arguments.length;
所以我们可以通过判断传入的实参的不同,执行不同的操作,变相实现重载操作