函数-Function
函数:是可以被重复使用的代码块
作用:函数可以把具有相同或者相似逻辑的代码包裹起来,这么做利于代码复用
函数基本使用
- 定义函数
function 函数名(){
函数体
}
- 调用函数
函数名()
注意事项:
- 不调用不执行
- 可以多次调用
- 命名语法跟变量一致
函数整体认知
function fn(){
let x = 20
let y = 11
console.log(x +y)
}
fn()
这样的代码只能函数内部打印,局限性很大
函数完整的执行流程:
1.调用函数并且传递数据给函数
2. 执行函数整体代码:函数内部处理
3.返回一个结果给使用者,使用return关键字
函数语法
function sum(参数1, 参数2...) {
return 结果
}
console.log(sum(1, 2)) // 输出函数返回的结果
说明:
-
函数参数,如果有多个则用逗号分隔,用于接受传递过来的数据
-
return 关键字可以把结果返回给调用者
函数参数
执行过程:实参向形参传递参数
- 声明时括号里的值叫做形参(形式上的参数)
- 调用时括号里的值叫实参(实际上的参数)
- 多个参数用逗号隔开
- 实参过多会被省略
- 形参过多会自动补充undefined
逻辑中断&& 和 ||
值1 && 值2
- 左边为假返回左边
- 左边为真直接返回右边的值
值1 || 值2
- 左边为真则直接返回左边
- 左边为假直接返回右边
默认参数
形参可以理解成变量
/* 函数参数-默认参数 */
function fn(x=0,y=0){
return x+y
}
console.log(fn());//0
执行过程
- 用户不传入参数就可以给形参设置默认值
- 没有实参传递就执行默认参数
- 传递来的是undefined执行默认参数
函数的返回值
返回值 :return
作用:把函数结果返回给了调用者
- retrun后面的代码不会执行
- return后面的代码不能换行
- 函数如果没有有return则返回的是undefined
- break是结束循环和whitch语句,而return是结束函数语句
为什么需要返回值?
1 在开发中很多地方都要使用,不同的情况处理结果不同
2 函数内部数据存在内部空间,外部无法使用
变量来接收 let 变量名 = 函数名(实参)
作用域
作用域( scope): 变量或者值在代码中可用性的范围
作用 ::作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突,避免变量污染
全局作用域
- 作用于所有代码执行环境整个script标签内
局部作用域
函数作用域和块级作用域
- 函数作用域作用于整个函数内
块级作用域作用于{}内
全局变量 在任何地方都能访问和修改
局部变量 只能在当前局部内访问和修改,外部访问会报错
var 声明变量没有块级作用概念
注意点:
- 函数内部没有声明但赋值的变量是全局作用域
- 函数内部的形参会当做局部作用域
匿名函数
具名函数:带有名字的函数
function 函数名(){
}
函数名()//调用
匿名函数:没有名字的函数
function (){
}
函数表达式:用匿名函数赋值给一个变量,用变量来调用叫做函数表达式
let fn = function (){
//函数表达式
}
注意事项:
- 具名函数可以先调用后声明
- 函数表达式必须先声明再复用
- 函数表达是可以传递参数,和使用返回值return
立即执行函数 语法:
- (function(){})()
- (function(){}())
作用:避免变量污染
注意:
- 多个立即函数之间用分号隔开
- 无需调用,本身已经调用