函数介绍
- 函数概念: 将任意代码封装到一起,需要用的时候进行调用执行
- 语法
// 函数定义
function 函数名(){
函数体 //封装的代码
}
//函数调用语句:
函数名()
- 调用方式
//定义一个名为getMax的函数
function getMax() {
var a = 23
var b = 34
var max = a
if (max < b) {
max = b
}
console.log('大的值是:', max)
}
getMax() //调用函数getMax执行函数max封装的代码
函数参数
形参:
- 就是在函数内部可以使用的变量,在函数外部不能使用
- 行参的值是在函数调用的时候由实参决定的
实参
- 在函数调用的时候给形参赋值的 也就是说,在调用的时候是给一个实际的内容的 多个参数的时候,是按照顺序一一对应的
function 函数名 (m,n,j){ // m,n,j =>形参1,形参2...
函数体
}
函数名(100,200,20) // 100,200,20 =>实参1,实参2...
传参过程
参数个数
形参比实参少
- 因为是按照顺序一一对应的
- 行参少就会拿不到实参给的值,所以在函数内部就没有办法用到这个值
function fn(num1,num2){
//函数内部可以使用num1和num2
}
// 本次调用的时候,传递了两个实参,100,200和300
// 100对应了num1,200对应了num2,300没有对应的变量
// 所以在函数内部就没有办法依靠变量来使用300这个值
fn(100,200,300)
形参比实参多 因为是按照顺序一一对应的 所以多出来的行参就是没有值的,就是 undefined
function fn(num1,num2,num3){
//函数内部可以使用num1,num2和num3
}
// 本次调用的时候,传递了两个实参,100和200
// 100对应了num1,200对应了num2
// 而num3没有实参和其对应,那么num3的值就是undefind
fn(100,200)
参数默认值
function 函数名(形参1, 形参2) {
形参1 = 形参1 || 默认值1
形参2 = 形参2 || 默认值2
函数体
}
函数名(实参1)
函数名()
函数返回值
return 返回的意思,其实就是给函数一个 返回值 和 终断函数
return语句 返回函数调用处
=> return 值
=> return
终断函数
- 当我开始执行函数以后,函数内部的代码就会从上到下的依次执行
- 必须要等到函数内的代码执行完毕
- 而 return 关键字就是可以在函数中间的位置停掉,让后面的代码不在继续执行
function fn() {
console.log(1)
console.log(2)
console.log(3)
//写了return以后,后面的4和5就不会继续执行了
return
console.log(4)
console.log(5)
}
//函数调用
fn()
返回值
return 关键字就是可以给函数执行完毕一个结果
function fn() {
//执行代码
return 100
}
//此时,fn() 这个表达式执行完毕后就有结果出现了
console.log(fn())
- 我们可以在函数内部使用
return关键把任何内容当做这个函数运行后的结果
函数类型
1.无参无返回值
function fun(){
}
fun ()
2.有参有返回值
function fun(m){
}
fun (100)
3.无参有返回值
function fun(){
return 值
}
var m = fun ()
4.有参无返回值
function fun(m){
}
fun ()
函数优点
- 封装代码,使代码更加简洁
- 复用,在重复功能的时候直接调用就好
- 代码执行时机,随时可以在我们想要执行的时候执行
函数定义方式
- 声明式函数定义
function fn(){
}
- 函数表达式, 也称赋值式函数定义
var fn = function(){
}
预解析
- 浏览器javascript引擎解析执行javascript代码
- 执行javascript代码之前,扫描通读js代码,如果发现声明式函数和var声明的变量,将其提前
javascript源代码 ——> 执行
|
预解析
1.声明式函数提前
2.var声明变量提前
注:同名情况,声明式函数优先
一定避免函数名和变量名相同的情况