当前位置: 首页 > wzjs >正文

平台网站制作湖南响应式网站建设

平台网站制作,湖南响应式网站建设,如何制作自己的app,济南网网络推广在 JavaScript 中,GO(Global Object,全局对象) 和 AO(Activation Object,活动对象) 是与执行上下文密切相关的核心概念。它们分别对应全局作用域和函数作用域的底层实现机制。 一、GO&#xff0…

在 JavaScript 中,GO(Global Object,全局对象)AO(Activation Object,活动对象) 是与执行上下文密切相关的核心概念。它们分别对应全局作用域和函数作用域的底层实现机制。


一、GO(Global Object,全局对象)

1. 定义
  • GO 是全局执行上下文的变量对象,代表全局作用域。
  • 在浏览器环境中,GO 是 window 对象;在 Node.js 中是 global 对象。
  • 所有全局变量、函数声明都会绑定到 GO 上。
2. 创建时机
  • 在脚本加载时立即创建,生命周期持续到页面关闭。
  • 是 JavaScript 引擎初始化时第一个创建的对象。
3. 内容
  • 内置全局属性和方法(如 setTimeoutMathconsole 等)。
  • 开发者声明的全局变量和函数。
    var globalVar = "全局变量";
    function globalFunc() { /* ... */ }
    // 等价于 window.globalVar 或 window.globalFunc
    
4. 生命周期
  • 持久存在,直到页面卸载。

二、AO(Activation Object,活动对象)

1. 定义
  • AO 是函数执行上下文的变量对象,代表函数作用域。
  • 在函数调用时创建,用于存储函数参数、局部变量和内部声明的函数。
2. 创建时机
  • 在函数被调用时创建,函数执行完毕后销毁(闭包除外)。
  • 每次函数调用都会生成一个新的 AO。
3. 内容
  • 函数的形参(Parameters)。
  • 函数内部声明的变量(var)和函数声明。
  • arguments 对象(类数组,存储所有实参)。
4. AO 的创建过程

AO 的生成分为两个阶段:

  • 进入执行上下文阶段(预解析阶段)
    • 创建 AO,初始化形参、函数声明和变量声明。
    • 此时变量值为 undefined,函数声明已完全初始化。
    function test(a) {var b = 2;function c() {}var d = function() {};
    }
    test(1);// AO 预解析阶段:
    AO = {a: 1,             // 形参赋值b: undefined,     // 变量声明未赋值c: reference to function c() {}, // 函数声明已初始化d: undefined,     // 变量声明未赋值arguments: [...]  // 实参列表
    };
    
  • 代码执行阶段
    • 按顺序执行代码,为变量赋值。
    // 执行阶段:
    AO = {a: 1,b: 2,c: reference to function c() {},d: reference to function expression,arguments: [1]
    };
    
5. 变量提升(Hoisting)

AO 的预解析阶段解释了变量提升现象:

  • 函数声明整体提升,变量声明提升但赋值留在原地。
    console.log(a); // undefined(变量提升)
    var a = 10;func(); // "执行"(函数声明提升)
    function func() { console.log("执行"); }
    

三、GO 与 AO 的关系

1. 作用域链(Scope Chain)
  • 函数执行时,会创建一个作用域链:当前 AO → 外层 AO → ... → GO
  • 变量查找按作用域链逐层向上。
    var global = "全局";
    function outer() {var outerVar = "外层";function inner() {var innerVar = "内层";console.log(innerVar);    // 当前 AOconsole.log(outerVar);    // 外层 AOconsole.log(global);      // GO}inner();
    }
    outer();
    
2. 生命周期对比
GOAO
创建时机脚本加载时函数调用时
销毁时机页面关闭函数执行完毕(闭包除外)
数量1 个每次函数调用生成新的 AO

四、示例分析

示例 1:变量提升与 AO
function demo(a) {console.log(a);       // 输出 1(形参已赋值)console.log(b);       // undefined(变量提升)var b = 2;console.log(c());     // "函数c"(函数声明提升)function c() { return "函数c"; }
}
demo(1);// AO 预解析阶段:
AO = {a: 1,b: undefined,c: reference to function c(),arguments: [1]
};
示例 2:作用域链
var x = 10;
function foo() {var y = 20;function bar() {var z = 30;console.log(x + y + z); // 60(从 GO 和外层 AO 查找)}bar();
}
foo();

五、注意事项

  1. 严格模式evalwith 可能动态修改作用域链,但通常不建议使用。
  2. 块级作用域letconst 引入了块级作用域,其行为与 var 不同,不会绑定到 AO/GO,而是存储在词法环境中。
  3. 闭包:函数返回时,若内部函数引用了外层 AO 的变量,外层 AO 不会被销毁。

理解 GO 和 AO 的机制,是掌握 JavaScript 作用域、闭包、this 绑定等高级主题的基础。

http://www.dtcms.com/wzjs/611436.html

相关文章:

  • 网站页面示意图怎么做友联建设集团官方网站
  • 效果图网站有哪些好的青岛网站制作
  • 东莞阳光网官方网站郑州哪里有做网站
  • 连云港网站建设价位WordPress未设置密码用户
  • 贵阳app下载首页网站关键词优化教程
  • 莱州做网站汕头建设银行电话
  • 网站运营建站优化专家宁波外贸网站设计公司
  • 杭州做网站seowordpress 移除字体
  • 廊坊网站建微信公众号小程序制作流程
  • wordpress搬站流程mvc5 网站开发美學 pdf
  • 阿里云购买网站登录wordpress伪静态404错误
  • centos6.6做网站fedora做网站服务器
  • 建立公司网站的好处jsp网站 值班
  • 张家口网站建设电话全部游戏免费(试玩)不用下载
  • 招投标网站销售怎么做小区媒体网站建设
  • 怎么区别做pc端和手机端网站云南商城网站建设
  • 产品做网站推广银川建设厅网站
  • 中启智联网站建设影楼网站怎么做
  • 淘宝联盟的网站怎么自己做一建论坛建工教育网
  • ps做网站首页怎么石家庄展为网络科技有限公司
  • 网站管理系统是什么建外贸网站 东莞
  • 批量建站怎么赚钱网页源码下载
  • 网页设计优化网站建设可以吗Wordpress可以卸载吗
  • vps网站助手建网站不花钱免费建站
  • 仿糗事百科网站源码dede二次开发分享+评论+互动设计签名 免费 名字
  • 仓库盘点网站开发销售网站设计方案
  • 安徽建站优化哪里有设计兼职网站有哪些
  • 新开传奇网站手游wordpress跳转手机站
  • 重庆网站推广营销360企业自助建站
  • 要建立网站怎么建立电子商务网站建设子项目