执行上下文(execution context)

现代js教程:执行上下文是一个内部数据结构,包含有关函数执行时的详细细节:当前控制流所在的位置,当前的变量,this的值,其他细节。

一个函数调用仅具有一个与其相关联的执行上下文。

1 let company = { // 是同一个对象,简洁起见被压缩了
2   sales: [{name: 'John', salary: 1000}, {name: 'Alice', salary: 1600 }],
3   development: {
4     sites: [{name: 'Peter', salary: 2000}, {name: 'Alex', salary: 1800 }],
5     internals: [{name: 'Jack', salary: 1300}]
6   }
7 };
  1. 创建一个名为company的对象
  2. company包含一个数组,叫做sales,sales数组中存放了两个对象。
  3. company包含一个对象,叫做development,development对象中又存放了两个数组:sites和internals。
  4. sites中存放了两个对象
  5. internals中存放了一个数组。

 

 1 function sum(a){
 2     if(Array.isArray(a)){
 3         return a.reduce((prev,current)=>prev+current.salary,0);
 4     }
 5     else {
 6         let sum1=0;
 7         for(let v of Object.values(a)){
 8             sum1 +=sum(v);
 9         }
10         return sum1;
11     }
12 }
  • 如果是数组,则立即给出结果
  • 如果是对象,则生成子调用
上一篇:tabelu 一个fixed 级别表达式例子


下一篇:C++拷贝构造函数,析构函数与内存泄漏的那些坑