函数定义:理解为一个盒子
当一段代码需要多次使用时,把这段函数放在抽离出来放在一个盒子里面(函数)
需要使用时调用即可。
如何使用函数:
1、定义(创建)函数:必须要有,没有无法调用
1.1语法:function 函数名() {}
- 赋值式定义: var fn = function() {}
- 声明式定义: function fn() {}
- function-------关键字
- fn-------------函数名
- ()-----------参数书写位置
- {}-------------代码,函数调用要执行的代码
1.2区别:
- 1、书写:
2、调用:赋值定义var fn = function() {}不能在定义前调用函数
原因:会出现 变量提升
变量提升:在浏览器读js代码的时候,有一个与解析,此时会有一个变量提升。
什么是变量提升:在预解析时将js内部的变量全部提升到当前作用的顶端(当前代码的最顶端)
注意:只是把声明变量提升到最顶端
1.3赋值式为变量提升形式
浏览器预解析
fn() //----fn()为调用函数不需要变量提升
var fn = function(){
console.log(1) //----需要变量提升
}
fn() //-----不需要变量提升
变量提升后
var fn; //变量定义提到代码顶端
fn() //由于未定义变量类型和值 所以此时fn为undefined
fn = function(){
console.log(1) ----//fn赋值为函数
}
fn() //此时fn有值正常打印
1.4声明式声明提升: function fn() {}可以在定义前调用函数,浏览器在声明提升时,会将值也带着提升上去
声明式变量提升:
浏览器与解析
fn() //----fn()为调用函数不需要变量提升
var fn = function(){
console.log(1) //----需要变量提升
}
fn() //-----不需要变量提升
/**
* 声明式函数为声明提升
* 声明提升后
* function fn(){
* console.log(1) //将值也提升到最上面
* }
*
* fn() //正常打印
* fn()
*
*/
2、调用:必须要有,否则函数无意义。
只有一种写法
- 语法:函数名()例:fn()
3、函数参数 3.1为什么要有参数?
使功能更灵活
使函数更具差异性
3.2参数语法:
1、形参:放在function或函数后的小括号中
2、实参:当函数调用时函数名后面的小括号中
3.3参数的作用:
1、形参:书写一个形参相当于在函数内创建一个变量,值由实参传递。
2、实参:调用时用于给形参传递变量值。
3.4、实参数和形参数数量比一样时
1、形参多、实参少
第一个实参传递给对应的形参,后续没有实参,相当于只声明不赋值,输出undefined
2、形参少、实参多
实参的第一个传递给形参,后续的不通过形参获取。
3、函数的返回值
return 会把函数终止掉、 break(结束循环)
返回赋值给变量
不管是否写返回值,每个函数默认都会有返回值
默认值为:undefined
注意:函数的返回值具有中断的作用、写在最后面