JavaScript高级程序设计--变量、作用域和内存问题

基于STM32设计的个人健康检测仪(华为云IOT)(191) 本系统采用华为云物联网平台实现数据云端存储与分析,并通过自研手机APP提供远程监控界面,让用户无论身处何地都能及时掌握自身的健康数据,为用户提供个性化的健康管理方案,同时也为医疗机构提供了便捷的数据获取途径,助力实现智能化、精细化的医疗服务。 阅读详情

1 基本类型和引用类型的值

基本类型值: 简单的数据段(Undefined Null Boolean Number String),保存在栈内存中
引用类型值: 可能有多个值构成的对象(Object),保存在堆内存中

关于操作对象:赋值保存着对象的某个变量时,操作的是对象的引用;为对象添加属性时,操作的是实际的对象

1.1 传递参数

所有函数的参数都是按值传递的
看两个栗子:

function setName(obj){
	obj.name="Nicholas";
}
var person = new Object();
setName(person);
// person.name "Nicholas"

person 因为按值传递被复制到函数内的obj, 而对象复制后实际都指向堆内存内的同一个对象,所以person 和 obj引用同一个对象,所以函数内改obj属性person相应属性值也改变

function setName(obj){
	obj.name="Nicholas";
	obj=new Object();
	obj.name="Greg";
}
var person = new Object();
setName(person);
// person.name "Nicholas"

证明按值传递,obj对象会在函数执行完毕后被摧毁

2 执行环境和作用域

执行环境分为全局执行环境和局部执行环境:
每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中,例如全局执行环境是window对象,直到应用程序退出,比如关闭网页和浏览器才会被销毁
每个函数都会有它的执行环境

当代码在一个环境中执行时,会创建变量对象的一个作用域链(可用于搜索变量和函数)。作用域链的前端,是当前执行的代码所在环境的变量对象,如果这个环境是函数,就将其活动对象(最开始只包含arguments对象)作为变量对象。作用域链的下个变量对象包含(外部)环境,window对象始终是作用域链的最后一个对象。

2.1 没有块级作用域

for(var i=0;i<10;i++){
	dosomething(i);
}
// i 10

2.2 查询标识符(变量与函数)

沿着作用链向上搜索,先找局部环境,再向上搜索,一直追溯到全局环境的变量对象。

3 垃圾收集

管理内存中的解除引用

var a=new Object();
//一系列操作之后用不到a了
a = null;

为了确保有效回收内存,应该及时解除不再使用的全局对象,全局对象属性以及循环引用变量的引用。

Sigrity Power Tree如何生成电源树操作指导 Sigrity Power Tree可以方便地生成电源树,仅需要网表文件就能将系统的电源树直观的显示出来,生成的电源树文件可以用Power DC,optimizePI进行直流和交流仿真,下面介绍如何生成电源树。Base on [Device_TYPE and VALUE]就是识别网表中器件的Device_TYPE作为power tree中的模型的名字。Allegro layout netlist file,就是从Allegro layout文件中输出的netlist第三方网表文件。如何生成电源树操作指导。 阅读详情

相关推荐

ComfyUI安装包运行前准备:安装Git

Git 是一个分布式版本控制系统(Version Control System, VCS),用于跟踪和管理文件(尤其是代码)的变更历史。 简单理解就是,git是用来管理文件的版本的,如果有新的版本,就可以使用git来更新。

聚梦小课堂 2万+

js高级程序设计(四)变量、作用域和内存问题

基本类型和引用类型的值 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是Undefined 、 Null 、 Boolean 、 Number 和 String,而引用类型值指那些可能由多个值构成的对象。基本数据类型是按值访问的,引用类型的值是按引用访问的。 动态的属性 对于引用类型的值,我们可以为其添加属性和方法,也可以改变和删除其属性和方...

weixin_33961829的博客 133

NRF24L01模块的5个常见问题及解决方案:从信号干扰到功耗优化

本文深入探讨NRF24L01无线模块在STM32开发中的5大常见问题及解决方案,包括通信距离优化、数据丢失排查、电源噪声抑制、SPI通信故障处理以及低功耗设计。通过代码示例和电路图分析,提供实用的优化策略,帮助开发者提升无线通信的稳定性和效率。

weixin_28256233的博客 226

JavaScript高级程序设计(4)变量、作用域和内存问题

本章内容:理解基本类型和引用类型的值;理解执行环境;理解垃圾收集。 基本类型和引用类型的值 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值。 基本类型值:简单数据段;Undefined、Null、Boolean、Number和String;可以操作保存在变量中实际的值。 引用类型值:多个值构成的对象;Function、Array、Object.......

weixin_33923762的博客 113

机器学习预测材料性能:从特征工程到SHAP可解释性分析

机器学习在材料科学中的应用,核心在于将复杂的材料性能预测问题转化为数据驱动的建模任务。其基本原理是通过算法从历史数据中学习特征与目标属性之间的映射关系。这项技术的价值在于能够大幅加速新材料的发现与设计周期,降低传统“试错法”的高昂成本。在工程实践中,它广泛应用于预测如形成能、带隙、弹性模量以及居里温度等关键材料性能。具体到磁性材料领域,居里温度的准确预测对于永磁体和自旋电子器件设计至关重要。本项目深入探讨了如何利用特征工程从材料成分与结构中构建有效描述符,并借助SHAP这一可解释性工具,揭示模型决策背后的物

weixin_27155667的博客 651

企业数据治理体系中的AI与业务融合:架构师的3个成功案例

企业数据治理的痛点从来不是“有没有做”,而是“做了之后有没有用”——很多企业花了数百万建数据仓库、做元数据管理,最后却陷入“数据躺在库里睡大觉”“AI模型因数据质量差而失效”的困境。本文通过零售、金融、制造3个真实案例,拆解架构师如何用AI连接数据治理与业务场景:从“客户画像不准”到“精准推荐提升30%转化率”,从“欺诈检测漏报”到“实时拦截减少50%损失”,从“库存积压”到“供应链周转率提升20%”。如何让数据治理从「合规驱动」转向「价值驱动」?

AI 原生应用开发的博客 992

JavaScript高级程序设计笔记-变量、作用域和内存问题

1.数据类型        基本类型值:简单的数据段,Undefined、Null、Boolean、Number和String,这五种基本数据类型是按值访问的,因为可以操作保存在变量中的实际的值。        引用类型值:可能由多个值构成的对象,引用类型的值是保存在内存中的对象,JavaScript不允许直接访问内存中的位置,不能直接操作对象的内存空间,在操作对象时,实际上是在操作对

糖糖小菜鸟前端er 479

12、多端神经形态晶体管:原理、应用与算法探索

本文综述了多端神经形态晶体管的原理、应用与算法探索。从神经元MOS晶体管的发展到基于电解质栅极晶体管(EGT)的新型器件设计,系统阐述了其在低电压、多功能逻辑运算和突触行为模拟方面的优势。重点介绍了其在化学生物传感器(如多巴胺和pH检测)中的高灵敏度应用,以及在树突整合、时空总和、动态逻辑和神经元算术等树突算法中的实现。文章还总结了该类器件在神经形态计算、智能传感等领域的广阔前景,并分析了当前面临的材料工艺、理论建模与系统集成挑战,展望了未来发展方向。

delta的博客 143

《JavaScript高级程序设计》变量、作用域和内存问题(第三章)

1.基本类型和引用类型的值 ①基本数据类型:Undefined、Null、Boolean、Number 和 String ②引用数据类型:对象(在操作对象时,实际上是在操作对象的引用而不是实际的对象。 为此,引用类型的值是按引用访问的) 2.变量存储 ①基本数据类型变量存储在栈中,引用类型对象存储数据存储在堆中,栈中存放着指向堆中的指针 ...

PeaYing的博客 373

学Simulink--人形机器人控制场景实例:基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真

matlab编辑% 连杆长度 (m)% 躯干(髋到CoM)% 大腿% 小腿% 质量 (kg)% 转动惯量(绕质心,简化为杆)matlab编辑% 躯干CoM(假设在髋上方L_body/2处)% 左大腿CoM% 左小腿CoM% (右腿类似,略)本文完成了基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真,实现了:✅ 定义7-DOF平面人形结构✅ 使用Symbolic Math Toolbox自动推导动力学方程✅ 生成。

amy_mhd的博客 398

【100%通过率】华为OD机试真题 Python 实现【网上商城优惠活动 / 模拟商场优惠打折II】

某网上商场举办优惠活动,发布了满减、打折、无门槛3种 优惠券,分别为: 1:每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推; 2:92折券,1次限使用1张,如100元,则优惠后为92元, 3:无门槛5元优惠券,无使用数限制,直接减5元。

MISAYAONE的博客 9372

js函数参数传值

js引用类型传值 《高程3》p70中原文说: ECMAScript中所有函数的参数都是按值传递的。 然后在后文中作者举了这样的例子: function setName(obj) { obj.name = "Nicholas"; obj = new Object(); obj.name = "Greg"; } var person = new Object(); setNa...

m13070102173的博客 879

Qt C++ HTTP 调用通义千问大模型 X 学术论文润色工具(SCI 格式适配)

请求地址:`https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation`;| Windows | 打包时携带 `Qt6Network.dll`/`libcrypto-1_1-x64.dll` 等依赖;| Linux | 安装 `libssl-dev` 和 `libcurl4-openssl-dev`;| API 调用失败 | 检查 API-KEY 是否有效;

寒寒豆豆软件公司的博客 104

JavaScript变量作用域和内存问题(js高级程序设计总结)

1,变量 ECMAScript和JavaScript是等同的吗?个人认为是否定的。我的理解是这样的,ECMAScript是一套完整的标准或者说协议,而JavaScript是在浏览器上实现的一套脚本语言。也就是说,ECMAScript是JavaScript的父类标准。JavaScript是ECMAScript的具体实现。所有ECMAScript定义的数据类型或者语言特性实际上...

bacheyu9657的博客 119

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

《JavaScript高级程序设计》第4章 js中的变量、作用域和内存问题

《JavaScript高级程序设计》第4章变量、作用域和内存问题 ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值。在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。 函数的参数都是按值传递的。 typeof操作符: 是确定一个变量是字符串、数值、布尔值,还是undefined的最佳工具,但是对引用类型来说就无能为力了。

Gyoung杨广 309

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

javaScript高级程序设计(第三版)-第四章 变量、作用域和内存问题

前面三章都是基础,所以直接跳过。 1、变量 由于javaScript是一个弱语言,表明变量的值及其数据类型可以在脚本的生命周期内改变,可以随意变来变去。其中变量包含的数据类型可以分为两类:基本类型和引用类型。 基本类型:Number String Booler nudifind null固定大小,存在栈内存中。直接引用值,是复制一个副本 引用类型:[] {} 不是固定大小...

weixin_33716557的博客 140

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

精简《JavaScript高级程序设计》四 、变量,作用域,内存问题

精简《JavaScript高级程序设计》四 、变量,作用域,内存问题 第四章概况 4.1基本类型和应用类型的值 4.2执行环境及作用域 4.3垃圾收集 4.1基本类型和引用类型 ES变量包含基本类型值和引用类型值 基本类型指的是简单的数据段,包括Undefined、Null、Boolean、Number、String 引用类型值指的是那些可能由多个值构成的对象,包括Object,可以添加属性和方法...

furfur-jiang的博客 517

JavaScript高级程序设计-变量作用域和内存问题

JavaScript高级程序设计-变量作用域和内存问题4.1.☆基本类型和引用类型的值4.2执行环境及作用域简述4.3垃圾收集 4.1.☆基本类型和引用类型的值 变量包含两种不同数据类型的值: ①基本类型值 按值访问,可直接操作保存在变量中的实际的值 。undefined null boolean number string ①引用类型值 保存在内存中的对象,不允许直接访问,按引用访...

weixin_41232483的博客 206

JavaScript高级程序设计 第四章 — 变量、作用域和内存问题

JavaScript高级程序设计 第四章 变量作用域和内存问题 基本类型和引用类型 复制变量值 基本类型值的复制 引用类型值的复制 传递参数 执行环境及作用域 延长作用域链 声明变量 查询标识符 小结 基本类型和引用类型的特点 执行环境总结JavaScript高级程序设计 第四章 — 变量、作用域和内存问题基本类型和引用类型ECMAScript变量可能包含两种类型的值:基本类型值和引用类型值。 基

CherishLyf 717

20180719 Javascript高级程序设计——变量、作用域和内存问题

4.1 基本类型和引用类型的值 ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象。 在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。第 3 章讨论了 5 种基本数据类型:Undefined、Null、Boolean、Number 和 String。这 5 种基本数据类型是...

寄蜉蝣于天地,渺沧海之一粟。 255

JavaScript中的变量、作用域、和内存问题

前言 最近开始入坑js“圣经”之一的《JavaScript高级程序设计》,准备深入学习这门“博大精深”的语言,下面我学习第四章的总结及拓展。 目录 变量 js中声明变量的几种方式 var:可以声明任意类型的变量,js会根据变量的值来自动判定这个值是什么类型 function:主要是声明函数类型的变量,如定义一个函数 啥也不加直接写变量 下面是es6声明变量的方式 let:和var作用一样...

老曹的博客 260

《JavaScript 高级程序设计》学习笔记——变量、作用域和内存问题

第4章 变量、作用域和内存问题 JavaScript 的变量与其他语言有很大区别,其松散类型的本质决定了它只是在特定时间用于保存特定值的一个名字而已 4.1 基本类型和引用类型的值 ECMAScipt 变量可能包含两种不同数据类型的值: 基本类型值:指的是简单的数据段,在内存中占据固定大小空间,因此被保存在栈内存中 引用类型值:指那些可能由多个值构成的对象,保存在堆内存中 5种...

a26110056的博客 267

JavaScript高级程序设计——第4章 变量、作用域和内存问题

4.1、基本类型和引用类型的值 基本类型值 引用类型值 简单的数据段 可能由多个值构成的对象 按值访问,可以操作保存在内存当中的实际值 不能直接操作对象的内存空间 不能添加属性 可以添加、删改属性和方法 复制时,不共享内存 复制时,复制的副本实际是个指针,共享内存 参数传递:ECMAScript中所有函数的参数传递都是按值传...

扬扬羊的博客 317

javascript高级程序设计之变量、作用域和内存问题

1、基本类型和引用类型的值 1.1 动态属性

多看多听多总结 223

JavaScript高级程序设计第三版 第4章 变量、作用域和内存问题

第4章 变量、作用域和内存问题4.1 基本类型和引用类型的值4.1.1 动态的属性4.1.2 复制变量值4.1.3 传递参数为什么参数只能按值传递?4.1.4 检测类型4.2 执行环境及作用域*4.2.1 延长作用域链4.2.2 没有块级作用域1. 声明变量2. 查询标识符4.3 垃圾收集4.3.1 标记清除4.3.2 引用计数4.3.3 性能问题4.3.4 管理内存4.4 小结 JavaScri...

Hello 441

《JavaScript高级程序设计》第4章 变量、作用域和内存问题

4.1 基本类型和引用类型 5种基本类型:Undefined、Null、Boolean、Number和String,这5种基本类型是按值访问的,因为可以操作保存在变量中的实际的值。 引用类型:可能由多个值(这里的“多个值”应该是指对象和方法)构成的对象,是保存在内存中的。 4.1.2 复制变量值 当复制基本类型值的变量时,会在变量对象上创建一个新值,然后把该值复制到为新变量分配的...

amw198811的博客 129
上一篇: JavaScript高级程序设计--第三章基本概念
下一篇: Java基础注意点
yichen_adf
博客等级 码龄9年 0粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值