函数的概念
帮我们把项目中多个地方使用到的功能,抽离出来 然后在需要的地方 调用函数即可。
写一个函数
分为两个部分
1.定义阶段
2.调用阶段
函数的定义
- 赋值式定义
var fn = function( ){ } - 声明式定义
function fn1( ){ }
函数的调用
函数名( )
function fn1() {
console.log(222);
}
fn1()
声明式与赋值式的区别
1.书写不同 打印时,声明式会带上函数名,赋值式没有
2.调用时有差异 声明式:可以在函数定义之前调用
2.1 赋值式定义
fn() //fn is not a function
var fn = function(){}
fn()
调用时在函数之前调用不可以,只能在函数之后调用。
因为浏览器会做变量提升
var fn; 备注: 这一行会在当前最开始的哪一行, 第一行
fn() //fn is not a function 原因在于, 此时 fn 经过变量提升后, 有 fn, 但 值为 undefined
fn=function(){
console.log(222)
}
2.2 声明式定义
fn1()
function fn1(){}
fn1()
调用时在函数之前和之后调用都可以。
函数的参数
参数分为
- 形参 函数名后(function)后边的小括号内部,每书写一个 就相当于在函数内部声明一个变量,可以在函数内部去调用。
- 实参 调用函数使得小括号内部书写的值,就是实参,实参与形参为一一对应的关系。
注:如果实参数量少于形参,那么前边的形参对应接受值,没有对应实参的形参值为undefined。
如果形参数量少于实参,那么一一对应后,多余的实参无法通过参数获取。
函数的返回值
语法:return 需要返回的内容
函数默认返回值
可以不写return ,函数会默认在代码最后一行写上return undefined
返回值的书写
取决于 是否需要得到函数内部某一个变量的值,如果需要 可以使用返回值将其返回,如果不需要可以不写
return
具有中断函数执行的功能,
如果不想中断函数,那么一定要将return放在函数的最后
函数的预解析
预解析之后(会把函数提升到当前作用域最顶层)(暂时理解为 当前代码最开始的第一行), 在js中只有变量和函数才会有预解析或者提升。