介绍
函数就是用来执行特点任务的代码块, 目的是实现代码复用, 提高开发效率
使用
1.0函数的声明
function 函数名 () {
//函数体
}
2.0函数的调用
3.0命名规范
- 和变量命名规则基本一致
- 尽量小驼峰式命名
- 前缀应该为动词
传参
函数的参数可以极大提高函数的灵活性
1.0参数分类:
形参:形式参数,没有值,用来接收实参的值。
实参:实际参数,有值,用来给形参传递值。
2.0函数传参
// 声明一个有参数的函数
function( 形参1,形参2) {
//函数体
}
// 调用函数并传参
函数名(实参1,实参2)
注意:
- 在js中,如果有同名函数,后面的会覆盖前面的。
- 实参的个数可以和形参不一致:
- 如果实参多余形参,多余的实参会被舍弃。
- 如果形参多余实参,缺少的实参返回undefind。
- 实际开发中建议保持形参和实参一致
3.0默认参数
通过定义函数参数的默认值, 可以提高函数的健壮性
// 默认参数
function( 形参1 = 默认值) {
//函数体
}
- 默认参数只会在缺少实参时生效
- 函数参数缺少实参, 并且没有设置默认参数, 值就是undefined
- 这也符合" 形参就是函数内部声明的变量 "观点, 变量声明不赋值就是undefined
返回值
函数的返回值可以进一步提高函数的扩展性, 使调用者可以拿到函数执行的结果
- 函数是否需要返回值, 要根据实际需求确定
- 函数中通过return关键字返回执行结果, 交给调用者使用
- 函数中只能有一个return, return之后的程序不再执行
- return只能返回一个值,可以通过数组或对象的方式,返回多个值。
- 函数的返回值默认是undefined
作用域
作用域决定代码生效的范围, JS把作用域划分为全局作用域和局部作用域, 这样做的目的是提高程序的可靠性,减少可能的代码冲突
- 全局作用域:
- script标签内部
- 独立的js文件
- 局部作用域:
- 函数作用域(函数内部)
- 块级作用域( { }范围内 )
- 只要是代码, 就至少存在一个作用域
作用域链
多个作用域相连就形成了作用域链, 作用域链决定变量生效的值, 变量的访问遵循就近原则, 先局部, 再全局
根据作用域不同, 变量分为全局变量和局部变量
- 全局变量: 可以在任何区域访问
- 局部变量: 只能在当前作用域内访