小羊也疯狂 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 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题