
文章插图
现在,我们已经从前两个示例中掌握了它的诀窍,让我们按照预期的方式快速执行它:
- 第 1-8 行 。我们在全局执行上下文中创建了一个新的变量createCounter,并赋值了一个的函数定义 。
- 第9行 。我们在全局执行上下文中声明了一个名为increment的新变量 。
- 第9行 。我们需要调用createCounter函数并将其返回值赋给increment变量 。
- 第 1-8行 。调用函数,创建新的本地执行上下文 。
- 第2行 。在本地执行上下文中,声明一个名为counter的新变量并赋值为 0;
- 第 3-6行 。声明一个名为myFunction的新变量,变量在本地执行上下文中声明,变量的内容是为第4行和第5行所定义 。
- 第7行 。返回myFunction变量的内容,删除本地执行上下文 。变量myFunction和counter不再存在 。此时控制权回到了调用上下文 。
- 第9行 。在调用上下文(全局执行上下文)中,createCounter返回的值赋给了increment,变量increment现在包含一个函数定义内容为createCounter返回的函数 。它不再标记为myFunction````,但它的定义是相同的 。在全局上下文中,它是的标记为labeledincrement``` 。
- 第10行 。声明一个新变量 c1 。
- 继续第10行 。查找increment变量,它是一个函数并调用它 。它包含前面返回的函数定义,如第4-5行所定义的 。
- 创建一个新的执行上下文 。没有参数,开始执行函数 。
- 第4行 。counter=counter + 1 。在本地执行上下文中查找counter变量 。我们只是创建了那个上下文,从来没有声明任何局部变量 。让我们看看全局执行上下文 。这里也没有counter变量 。Javascript会将其计算为counter = undefined + 1,声明一个标记为counter的新局部变量,并将其赋值为number 1,因为undefined被当作值为 0 。
- 第5行 。我们变量counter的值 1,我们销毁本地执行上下文和counter变量 。
- 回到第10行 。返回值1被赋给c1 。
- 第11行 。重复步骤10-14,c2也被赋值为1 。
- 第12行 。重复步骤10-14,c3也被赋值为1 。
- 第13行 。我们打印变量c1 c2和c3的内容 。
推荐阅读
- 教您win10电脑锁屏怎么设置
- 电脑为什么打不开指定的网站?什么是DNS解析我要如何设置DNS
- 此刻我独领风骚哪首歌里面的
- 花生芝麻豆渣饼的做法
- 我想种植黄茶在哪里购买黄茶苗,中国黄茶之乡在哪里
- 我的成长故事 我的故事作文600字
- 养老金怎么查?教你三步搞定!
- 康山黄茶收货时怎么辨别真伪,我在网上买了康山黄茶收货时怎么辨别真伪
- 小夫与胖虎6张图 小夫我要进来了是什么梗
- redis的多路复用是什么鬼
