小羊也疯狂 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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘