小羊也疯狂 2018-02-21 05:40 采纳率: 100%
浏览 1204
已采纳

关于js执行环境的问题

在高级程序设计。 标记清楚没看懂
1.什么是“当变量进入环境”。什么是“当变量离开环境”。(来个例子)
2.一个函数定义了 ,是不是必须它执行,它的执行环境才存在?执行环境里的变量对象和作用域链才有意义。
如果该函数只定义不执行。 是不是没有变量对象和作用域链?

希望大神讲详细点 最好举个简单例子

  • 写回答

10条回答 默认 最新

  • qq_36275154 2018-02-25 10:29
    关注

    1.什么是“当变量进入环境”。什么是“当变量离开环境”。

    var color = 'blue';
    function changeColor(){
    color = 'red;
    };
    changeColor();
    //当调用函数changeColor时,changeColor函数在执行时会使用到外部的color变量,这个时候color变量进入环境。
    //当changeColor内的代码执行完毕后,这个时候color变量离开环境。

    2.一个函数定义了 ,是不是必须它执行,它的执行环境才存在?执行环境里的变量对象和作用域链才有意义。
    如果该函数只定义不执行。 是不是没有变量对象和作用域链?

    //每个函数都有自己的执行环境。当函数执行时,执行环境会被推入环境栈中,来执行函数中的代码,这个时候会创建当前环境的作用域链,供当前环境中的变量或者函数访问。当函数执行完,会退出执行的环境栈,销毁作用域链和相关变量。
    var color = 'blue';
    function changeColor(){
    var a = 1;
    color = ‘red‘;
    };
    console.log(a);//undefined
    //这里color 的执行环境是window ,a的执行环境是changeColor ,当调用changeColor时会把changeColor推入到环境栈中执行,这个时候会创建作用域链,如果changeColor作用域链内找不到color 会去父级作用域链中找,找不到会报undefined。
    //console.log(a);//undefined 由于window作用域链中没有a,所以undefined。

    这是我的理解,相互学习,希望对你有帮助

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决