函数
定义函数
plain
function 函数名(参数1,参数2,...){
函数体
}参数设置
- 无参函数
- 有参函数
- 剩余参数
剩余参数
plain
function 函数名(...参数){
函数体
}作用域
函数是一个基本作用域
- 全局变量
- 局部变量
- 块级变量
块级变量:let声明的变量,只在{}中有效
预解析
变量提升
变量提升到最上面
作用域才提升
垃圾回收
局部变量只在函数运行时存在,运行完毕后立即销毁,保存局部变量可以使用全局变量保存和return返回
匿名函数
没有名字的函数
箭头函数
函数名 = 参数 => 返回值
回调函数
| 方法 | 功能 |
|---|---|
| find() | 返回满足的第一个条件的元素 |
| every() | 判断是否所有元素都满足条件 |
| some() | 判断是否有元素满足条件 |
| forEach() | 遍历数组 |
| map() | 返回一个新数组,元素是原数组元素调用函数处理后的值 |
| reduce() | 对数组元素进行计算,返回一个值 |
| reduceRight() | 从右向左计算 |
函数嵌套
函数可以嵌套,嵌套的函数可以访问外层函数的变量,但是不能访问内层函数的变量
作用域链
函数执行时,会创建一个作用域链,作用域链中包含当前作用域,当前作用域的父作用域,直到全局作用域
找不到就返回上一层找,直到找到为止
闭包函数
- 函数外部访问函数内的变量
- 变量的值保存在内存中,不能被修改
一、定义与调用
1.定义
plain
function 函数名(参数1,参数2,...){
函数体
}2.参数
无参函数
javascript
function greet(){
console.log("Hello");
}有参函数
javascript
function max(a,b){
return a>b?a:b;
}
max(5,9) // 9剩余参数
plain
function 函数名(...参数){
函数体
}javascript
function add(...theNums) {
let sum = 0;
for (let num of theNums) {
sum += num;
}
return sum;
}
console.log(add(3, 7, 9, 15,66));二、作用域
函数是一个基本作用域
1.全局变量
函数外声明或函数内隐式声明的变量
2.局部变量
函数内用var声明的变量
3.块级变量
块级变量:let声明的变量,只在{}中有效
javascript
var str = '123' //全局变量
function test(){
var str2 = '234' //局部变量
for(let i = 0;i<3;i++){ //块级变量
console.log(i)
}
}4.垃圾回收
函数执行后,销毁局部变量,可以使用全局变量保存和return返回来保存
匿名函数
没有名字的函数
箭头函数
函数名 = 参数 => 返回值
回调函数
| 方法 | 功能 |
|---|---|
| find() | 返回满足的第一个条件的元素 |
| every() | 判断是否所有元素都满足条件 |
| some() | 判断是否有元素满足条件 |
| forEach() | 遍历数组 |
| map() | 返回一个新数组,元素是原数组元素调用函数处理后的值 |
| reduce() | 对数组元素进行计算,返回一个值 |
| reduceRight() | 从右向左计算 |
函数嵌套
函数可以嵌套,嵌套的函数可以访问外层函数的变量,但是不能访问内层函数的变量
作用域链
函数执行时,会创建一个作用域链,作用域链中包含当前作用域,当前作用域的父作用域,直到全局作用域
找不到就返回上一层找,直到找到为止
闭包函数
- 函数外部访问函数内的变量
- 变量的值保存在内存中,不能被修改
什么是闭包
内部函数可以访问其所在外部函数中声明的参数与变量
什么是闭包函数
声明在函数内部的函数
应用场景
闭包案例
plain
function A(){