前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >执行上下文

执行上下文

作者头像
天天_哥
发布2018-09-29 13:54:43
6480
发布2018-09-29 13:54:43
举报
文章被收录于专栏:天天天天
第一部分:执行上下文

1.javascript在执行一个代码段之前,都会进行这些“准备工作”来生成执行上下文

做了哪些准备工作

image.png

代码语言:javascript
复制
在全局下,没有参数,所以就没有下边的第一项,

看下边的例子:

image.png

代码语言:javascript
复制
解析:函数执行时,
a)先填充函数的参数,得到 x且得到值10,y:undefined;z:undefined,
b)函数声明,function x(){},且覆盖了原来的x:10,
代码语言:javascript
复制
再看下边的例子

解析: a)先填充参数,x:undefined;y:undefined;z:undefined; b)函数申明,在vo对象里有了function fn(){}; c)变量声明,因为变量fn和之前的函数名一样,所以此处的fn变量被忽略。

第二部分:执行上下文栈
代码语言:javascript
复制
执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境。
当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文
环境。处于活动状态的执行上下文环境只有一个。
其实这是一个压栈出栈的过程——执行上下文栈。如下图:

看代码演示

[内容摘自]http://www.cnblogs.com/wangfupeng1988/p/3989357.html

第三部分
代码语言:javascript
复制
情况一:
    function fn(){
        var a=x=y=1;
    }
//    console.log(a)//报错
    console.log(x)//报错
因为变量在函数内部声明,没有调用函数,所以.....

情况二:
    function fn(){
        var a=x=y=1;
    }
    fn()
   // console.log(a)  //报错
    console.log(x)  //1
情况三:
 var x =1;y=0;z=0
    function add(x){x=x+1}
    y=add(x);
    function add(x){x=x+3}
    z=add(x);
//函数没有返回值,所以....
    console.log(y)//undifined
    console.log(z)//undifined
情况四:
 var x =1;y=0;z=0
    function add(x){x=x+1;return x}
    y=add(x);
    function add(x){x=x+3;return x}
    z=add(x);
    console.log(y)//4
    console.log(z)//4
因为:
function add(x){x=x+3;return x}
    var x =1;y=0;z=0
    y=add(x);
    z=add(x);
    console.log(y)
    console.log(z)
情况五:
 console.log(a);//函数,函数和变量声明提前,此结果说明函数声明比变量更先;
    var a =3;
    function a(){
        console.log(a)//不执行,函数没调用
        var a= 3;
    }
    console.log(a);//3
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.10.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一部分:执行上下文
    • 做了哪些准备工作
    • 第二部分:执行上下文栈
    • 第三部分
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档