函数表达式
1. 定义函数的方式
//函数声明
function functionName(){}
// 函数表达式
var functionName = function(){}
2. 递归
3. 闭包
闭包是指有权访问另一个函数作用域中的变量的函数
ECStack
Execution Context Stack 执行环境栈EC
执行环境(执行上下文)
-VO
Varibale Object 变量对象
-AO
Activation Object 活动对象(函数的执行环境叫AO,是VO的一个分支)Scope
作用域,创建函数同时付给函数一个作用域ScopeChain
作用域链
定义一个变量
- 声明变量(declare)
- 创建值
-基本值
存在于栈中
-引用值
存在于堆中 - 复制(defined)
执行一个函数
4. 初始化实参集合
5. 创建形参变量并赋值
6. 代码执行
let x = 5;
function fn(x){
return function(y){
console.log(y + (++x));
}
}
let f = fn(6);
f(7); // 14
fn(8)(9); // 18
f(10); // 18
console.log(x); // 5
this指向
图片来自珠峰教育课程截图,点此进入视频链接