技术编程|几个例子理解不同数据类型的堆栈内存处理( 二 )
文章图片
GO global object 全局对象
不同于VO,VO(G)是全局变量对象,存储当前上下文声明的变量的
GO global object 全局对象,是加载页面默认形成的 。在浏览器中,加载页面时,在全局上下文中会默认定义一个叫window的对象,其中有setTimeout,setInterval等供js调用的属性和方法

文章图片
注意区分VO和GOJavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量在浏览器 JavaScript 中,通常 window 是全局对象,而 Node 。js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性 。在 Node 。js 我们可以直接访问到 global 的属性,而不需要在应用中包含它 。global,process,__filename,__dirnamejs如何运行(示例4)var a = {n: 1};var b = a;a.x = a = {n: 2};console.log(a.x);console.log(b);var a = {n: 1};var b = a;
前两行代码执行如下,不在阐述:

文章图片
要想理解a.x = a = {n: 2};
简单说一下运算符优先级var a=12,b=13;
相当于var a=12var b=13var a=b=13
相当于b=13var a=b//或者var a=13
正常计算都是从右到左处理的(当然第一步还是创建值)
但是不管是a.x=b=13还是b=a.x=13都要先计算a.x因为优先级比较高(成员访问的优先级为19,仅次于()运算,运算符优先级 )
a.x = a = {n: 2};运算步骤如下

文章图片
开辟内存,假设地址为0x000001
将地址放入栈中
a.x = 地址

文章图片
a = 地址

文章图片
所以现在a指向0x000001,b指向0x000000,即a为{n:2},b为{n:1,x:{n:2}}
结果:

文章图片
【技术编程|几个例子理解不同数据类型的堆栈内存处理】一个变量只可以关联一个栈中的值,但是一个栈中的值,可以被多个变量关联
推荐阅读
- 前瞻网|华大推15分钟新冠快速检测盒,前瞻医疗器械产业全球周报第47期:苹果被起诉窃取血氧监测专利技术
- 极酷数码客|价格很有优势,雷军刚发布行业领先技术!小米新机紧接被曝光
- 麦田军事观察|印度抨击法国公司拒绝转让核心技术啥意义?不知花钱买不来现代化
- 沈潮汐|扬言基建技术超越中国,2天后愣住了,印度3天时间搭好一座桥
- 量子科技,爆发!有项关键技术中国已领先世界
- 男子|47岁大妈与十几个男子发展关系,一个变化让男友们慌了
- 游人馆|和平精英:4AM成功晋级PEL决赛,有几个数据还是蛮有意思的
- 旭宝娱乐|除了白素贞你还记得哪几个?,赵雅芝最经典五个角色
- 歼-20|又一国看上国产战机,关键部位采用歼-20技术,一口气要采购40架
- 一品汽车|“备胎上位”道阻且长,氢燃料电池技术储备不足
