JavaScript高级程序设计学习总结二(JavaScript复杂的变量与内存问题)

JavaScript高级程序设计(第4版)知识点总结 介绍 JavaScript高级程序设计 第四版,在第三版的基础上添加了ES6相关的内容。如let、const关键字,Fetch API、工作者线程、模块、Promise 等。适合具有一定编程经验的 Web 应用开发人员阅读。 下面介绍一下各章节的知识点。 第1章 JavaScript概述 这章节主要讲解JavaScript历史回顾,它是在1995年由网景公司的 Brendan Eich 工程师开发的 JavaScript 1.0,1997 年,JavaScript 1.1 作为提案提交给 Ecma。TC 阅读详情

JavaScript变量是松散类型,这一本质不存在定义某个变量必须保存何种数据类型的规则,变量的值及其数据类型可以再脚本的生命周期内改变。

ECMAScript变量可能包含两种不同类型的值:基本类型值和引用类型值。

基本类型值:保存在栈中的简单数据段。

引用类型值:地址保存在栈中,内容保存在堆中的对象。

基本类型值和引用类型值在复制的过程中差别很大,复制一个基本类型值,会在栈中创建一个新值,然后把新值复制到一个新变量分配的位置上;复制一个引用类型值,是在栈中复制一份到另外一个分配空间中,但是复制的是指针,两个变量都指向同一个对象。这就是其中的区别

                                                

            图2.1 基本类型值的复制  

          图2.2 引用类型值的复制 

ECMAScript中所有的函数参数都是按值传递的。基本类型值按基本类型的复制方式,引用类型值按照引用类型复制。

 

 

检测类型

检测一个变量类型时,typeof是很好的工具,但是检测引用类型时就需要instanceof操作符,使用如下:

result = variable instanceof constructor

alert(person instanceof Object) //person 是Object 吗?  ture

instanceof 检测基本类型的时候永远是false ,因为不是对象。

执行环境和作用域

每一个执行环境都有一个与之关联的变量对象,环境中所有变量和函数都半寸在这个对象中。

每个函数都有自己的执行环境,当进入函数的时候,函数环境会被推入一个环境栈中,函数执行完之后,栈将环境弹出,吧控制权给之前的执行环境。

代码在环境中执行,产生一个作用域链,保证对所有变量和函数的有权访问。

JavaScript没得块作用域 

if(true){
    var color = "blue";
}
alert(color);   //blue

在JavaScript中,if 语句中的变量添加到当前的执行环境中(这里是全局的),使用if 语句一定要记住。

在JavaScript中,for循环结束后变量在外部也存在。

function add(num1 ,num2 ){
     sum = num1+num2;
     return sum;
}
var result = add(10,20);   //30
alert(sum);   //30

函数中变量环境是函数局部变量,但是如果没有声明就是全局的变量,如代码所示,sum是全局的变量。

垃圾收集

JavaScript具有自动垃圾收集机制,

离开作用域的值将会自动标记为可回收,下次再垃圾收集期间会被删除。

“标记清除”是目前主流的垃圾收集算法,另一中是“引用计数”跟踪所有值的引用次数,IE中DOM就是这种,但是容易导致错误。

解除变量引用不仅对消除循环引用有用,对垃圾收集也有好处,保证回收内存,应该及时解除不用的全局对象,对象属性。

AI在个性化营养方案制定中的应用:从代谢组学到膳食规划 本文章的主要目的是全面探讨AI在个性化营养方案制定过程中的应用,从代谢组学的数据收集与分析,到基于这些数据制定合理的膳食规划。范围涵盖了AI技术在该领域的核心概念、算法原理、数学模型、实际项目应用,以及相关的工具和资源推荐等方面。旨在为科研人员、营养师、软件开发人员等提供一个系统的知识体系,帮助他们更好地理解和应用AI技术来实现个性化营养方案的制定。核心概念与联系:介绍AI、代谢组学和膳食规划的核心概念,以及它们之间的相互联系,并通过文本示意图和Mermaid流程图进行展示。 阅读详情

相关推荐

TeraTerm 使用技巧

⏹TeraTerm 使用技巧

菜鸟记录 9999

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

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

老曹的博客 260

在线绘制富集分析多组气泡图和单细胞分析marker基因矩阵气泡图

常规的GO或者KEGG通路富集分析结果通常以气泡图的形式展示,然而这个气泡图仅仅是一个比较的结果,如果想在一张图上展示多个比较的结果,就需要用到多组气泡图(图1,左侧)。 单细胞RNA-seq分析结果中,矩阵形式的气泡图可以很好地展示marker基因(X轴)在不同cluster(Y轴)中的表达情况(图1,右侧)。

微生信 3665

【亲测免费】 探索JavaScript的深度与广度:《JavaScript高级程序设计(第四版)》PDF中文版推荐

在编程的世界里,JavaScript无疑是一门不可或缺的语言。无论你是前端开发的新手,还是寻求进阶的资深开发者,掌握JavaScript的高级技术都是提升技能的关键。《JavaScript高级程序设计(第四版)》由Nicholas C. Zakas编著,是一本深入浅出地讲解JavaScript核心概念和高级技术的权威书籍。现在,我们自豪地提供了这本书的中文版PDF文件,让你能够更轻松地深入学习Ja

gitblog_09800的博客 1187

从零玩转GD32单片机CAN总线:手把手实战配置与源码解析

本文提供了一份基于GD32单片机的CAN总线实战入门指南。从硬件连接(GD32F103C8T6与TJA1050收发器)到软件配置,详细解析了CAN初始化、波特率计算、过滤器设置及中断收发等核心源码。通过手把手的回环测试示例与常见问题排查,帮助开发者快速掌握CAN总线通信的关键配置与调试技巧。

g5h6i7j的博客 481

【WorkBuddy】WorkBuddy 智能体快速上手:从零到一的实践指南

文章摘要: 传统自动化脚本难以应对灵活多变的自然语言需求,导致逻辑复杂、维护成本高。智能体(Agent)通过理解语义意图、动态决策和松耦合组件解决了这些问题。WorkBuddy采用声明式配置,通过可视化界面定义意图、实体和对话策略,无需编码即可快速构建智能体。其核心组件包括意图分类、实体提取、对话策略、故事样本和回退机制,适用于客服支持、知识问答等高频场景。通过环境准备(Python/Node.js/Redis)和简单配置,用户可以快速搭建可运行的智能体,显著提升自动化效率。

ruiqideng的博客 1645

JavaScript高级程序设计

这是我对《JavaScript高级程序设计》的详细学习笔记,主要内容包括html中的JavaScript,变量基础,变量、作用域与内存,基本引用类型、集合引用类型,迭代器与生成器,对象、类与面向对象编程,函数,期约与异步函数,BOM,DOM,DOM扩展,DOM2和DOM3,事件......

hello_helloworld的博客 7889

深入解析report_timing:从基础参数到高级时序路径分析技巧

本文深入解析了静态时序分析(STA)中`report_timing`命令的核心用法与高级技巧。作为芯片设计的关键诊断工具,它能根据SDC约束精准定位时序路径问题。文章从基础参数过滤讲起,详细介绍了如何通过`-from`、`-through`、`-to`等选项定位关键路径,并深入讲解了`-input_pins`、`-nets`、`-transition_time`等高级选项如何揭示延迟细节,以及`-nworst`、`-slack_lesser_than`等过滤排序技巧,旨在帮助工程师高效解读时序报告,优化设计

h6i7j8的博客 1108

《javascript高级程序设计》,javascript高级编程设计

5种基本数据类型:string, number,Boolean,undefined,null复杂数据类型:object声明未赋值为undefined,未声明的变量只能进行一种操作:用typeof检测数据类型为undefined,但它确实不等于undefined2.nullnull是一个空对象指针,所以,undefined派生于null,所以但bool值为false的情况:空字串,0和nan,null,undefined3.number。

阿发狗伪原创 254

模拟电子技术课设-压控信号发生器

正弦波产生电路的目的就是使电路产生一定频率和幅度的正弦波,我们一般在放大电路中引入正反馈,并创造条件,使其产生稳定可靠的振荡。由于图2.3-1所示电路中存在RC电路和积分电路两个延迟环节,在实用电路中,将它们“合二为一”,即去掉方波发生电路中的RC回路,使积分运算电路即作为延迟环节,又作为方变三角波电路,滯回比较器和积分运算电路的输出互为另一个电路的输入。接着对各单元电路的工作原理进行了分析,由直流稳压电源电路提供所需电压,文氏振荡器产生正弦波,滞回比较器产生方波,滞回比较器与积分器连接产生三角波。

Sulfurone的博客 5324

从零开始:TexLive(Latex)安装与配置全指南

本文提供了一份详尽的TexLive(Latex)安装与配置全指南,旨在帮助用户从零开始快速搭建LaTeX工作环境。内容涵盖从镜像下载、安装步骤详解、环境验证到高效编辑器(如VS Code)配置,并特别强调了中文排版支持与宏包管理,确保用户能顺利处理学术论文等专业文档的排版需求。

weixin_29284885的博客 903

【免费下载】 JavaScript高级程序设计(第四版)中文版 PDF 下载指南

JavaScript高级程序设计(第四版)中文版 PDF 下载指南 【下载地址】JavaScript高级程序设计第四版中文版PDF下载指南 JavaScript高级程序设计(第四版)中文版 PDF 下载指南欢迎来到JavaScript学习资源库!这里我们自豪地提供了《JavaScript高级程序设计》第四版的中文版PDF...

gitblog_09744的博客 1918

7、Python高光谱分析工具(PyHAT)简介

Python高光谱分析工具(PyHAT)是一个开源、跨平台的Python库及图形用户界面,用于行星光谱数据的可视化与分析。它支持多种高光谱传感器数据,如火星勘测轨道飞行器的CRISM、月船1号的M3以及SELENE Kaguya SP点光谱仪,提供预处理、衍生产品生成、统计学习和机器学习分析功能。PyHAT基于Pandas和NumPy构建,兼容Jupyter和QGIS环境,旨在解决现有光谱分析方法缺乏开源实现、难以探索性分析和算法分散的问题。其模块化架构涵盖数据输入/输出、通用光谱变换、测绘与点观测工具及高

aa123的博客 138

JavaScript高级——数据、变量、内存相关问题、对象、函数

JavaScript高级数据、变量、内存相关问题对象函数IIFE原型和原型链原型原型链instanceof 数据、变量、内存相关问题 undefined与null的区别? undefined代表定义未赋值,null表示定义了也赋值了,值为null 什么时候给变量赋值null? 初始赋值,表明将要赋值为对象,结束前,让对象成为垃圾对象。 严格区别变量类型与数据类型 数据类型:- 基本数据类型:String、Nubmer、boolean、undefined、null     &n

xiaotangyu7dong的博客 752

Devexpress16.2.6破解工具

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

JavaScript高级程序设计(红宝书)学习笔记

(:介绍了一些很宏观大概的与JS相关的内容,浮光掠影地过了一遍,对JS的定义和大概版本兼容组成有了一些认识。JavaScript是一种专为网页交互设计的脚本语言,由下列三种不同部分组成:①ECMAScript,提供核心语言功能②文档对象模型(DOM),提供访问和操作网页内容的方法和接口③浏览器对象模型(BOM),提供与浏览器交互的方法和接口。

m0_63882057的博客 1924

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

JavaScript高级程序设计 读书笔记

本文摘要介绍了JavaScript的基础知识,包括其构成、HTML中的使用方式、基本概念以及变量和作用域等内容。JavaScript由ECMAScript标准实现,在HTML中需注意脚本位置对渲染性能的影响。文章详细讲解了数据类型、变量声明、严格模式、数值转换函数、字符串特性以及各种操作符的使用规则,特别强调了全等操作符的优势。最后指出JavaScript中所有参数均为值传递,并解释了基本数据类型与对象复制时的区别。这些基础知识为后续深入学习JavaScript奠定了基础。

SteveJrong's Blog 1054

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

js中的数据、内存和变量

  今天就说一说js中的数据、内存和变量吧。之前一直对变量关注的比较多,而忽视了内存和数据以及它们三者之间的关系,今天就在这里补一波。 一、js中的数据指的是什么?   数据在人们眼中向来都是一个非常抽象的事物,它无处不在,但是我们总是不知道怎么去描述它。而js中的数据,我认为它是指:在内存中可读的, 可传递的、保存了特定信息的“东西”,是我们在内存中所操作的目标。一个函数是数据、一个常量...

Wayne1998的博客 3241

JS高级(1)——数据、变量与内存

文章目录数据-变量-内存什么是数据?什么是内存?什么是变量?内存-数据-变量三者之间的关系相关问题对象函数回调函数IIFE(匿名函数)函数中的this补充分号问题 数据-变量-内存 什么是数据? 存储在内存中代表特定信息的东西,本质上是0101… 数据的特点:可传递,可运算。 一切皆数据。 内存中所有的操作目标:数据。(算术运算、逻辑运算、赋值、运行函数) 什么是内存? 内存条通电以后产生的可存储数据的空间(临时的) 内存产生和死亡:内存条(电路板)==> 通电 ==> 产生内存空间 ==&gt

weixin_46351593的博客 236

JavaScript高级程序设计(第5版):程序中的数据表达

本文介绍了JavaScript中变量的定义、作用域以及数据类型等基础知识。通过这些内容的讲解,帮助读者更好地理解JavaScript的基本概念和应用。

灵感干货铺 1304

《javascript高级程序设计》,javascript高级程序编程

大家好,本文将围绕javascript高级程序设计和权威指南两本书展开说明,javascript高级程序设计 javascript权威指南是一个很多人都想弄明白的事情,想搞清楚javascript高级程序设计这本书怎么样需要先了解以下几个事情。JavaScript诞生于1995年,最早的作用是在本地客户端处理数据验证。作者认为要想完全的理解和掌握JavaScript,关键在于弄清它的本质,历史和局限性。1997年制定标准ECMA-262的ECMAScript标准1.2 JavaScript的实现。

chatgpt001的博客 253

JavaScript高级-数据、变量、内存的定义与联系

1.定义 什么是数据? 存储在内容中代表特定信息的二进制编码,本质为01001… 数据的特点:可传递,可运算 一切皆数据 内存中所有操作的目标:数据 算术运算 逻辑运算 赋值 运行函数 什么是内存? 内存条通电后产生的可存储数据的空间(临时的) 内存的产生和死亡:内存条(电路板)>通电>产生内存空间==>存储数据==>处理数据==>断电==>内存空间和数据都消失 一块内存中包含 内部存储的数据 地址值 内存分类 栈:全局变量/局部变量 堆:对象

zzming的博客 308

【前端】JavaScript 变量引用、内存与数组赋值:深入解析三种情景

变量赋值与引用:赋值为引用数据类型时,变量保存的是内存地址,而不是数据本身。因此,重新赋值并不会影响其他引用该数据的变量。 内存模型:JavaScript 中,栈内存用于存储基本类型和引用地址,而堆内存用于存储复杂对象的内容。对引用对象的操作会影响到所有指向该内存地址的变量。 修改数组内容与重新赋值:直接修改数组的内容会影响所有引用该数组的变量,而重新赋值则会让变量指向一个新的对象,不影响其他引用。 2024.11.20-✍

禅宗里有一个词叫做“因缘和合”。 所谓因缘,是指事件要发生所必须的条件。因缘和合就是当你聚集了这件事的一切条件,它就会自然而然的发生。“它就会自然而然的发生”,这种朴素而坚定的价值观让我们感到无比安心,安心到可以不用有任何担心焦虑。 1286

《JavaScript 高级程序设计》学习笔记

我学习前端大概有三个月了,最近开始看这本比较厚的书,内容非常详细,很难完全记住。 因此我将书中的知识点记录下来,方便日后查阅。 第1章 JavaScript简介 1.1 JavaScript 简史 1.2 JavaScript 实现 1.2.1 核心(ECMAScript) 1.2.2 文档对象模型(DOM) 1.2.3 浏览器对象模型(BOM) 1.3 JavaScript 版本 1.4 小...

卡不加奇诺的博客 257

JavaScript【JS语法与变量】

前端语言:处理界面(HTML、CSS、JavaScript、……)后端语言:处理数据(Java、PHP、Python、Go、……)(浏览器)前端 <———— HTTP 协议 ————> 后端(服务器)传统的 JS 是一门前端语言,只能运行在浏览器端,不能在服务器端处理数据,且不能独立于浏览器存在,不能脱离 HTML!在 2009 年,诞生了 Node.js,这是一个 JavaScript 的服务端运行平台。

qq_64183220的博客 889

【JS】JavaScript入门笔记第七弹之JS简单类型与复杂类型~

JavaScript入门笔记第七弹之JS简单类型与复杂类型

森姐姐的博客 682

JavaScript 高级程序设计 读书笔记(第三章)

在 JavaScript 的世界里,第三章的内容可以说是奠基石,它决定了你对这门语言的基本理解。JavaScript 是弱类型语言,类型转换是家常便饭。以上就是第三章的读书笔记,下一篇我们深入解析第四章,聊聊变量、作用域和垃圾回收!严格模式可以让 JavaScript 变得更加严格,避免一些潜在的错误。在严格模式下,未声明的变量不能被赋值,防止意外创建全局变量。而一脸问号,那么恭喜你,这一章就是为你准备的。声明的变量不会被提升,访问前必须声明。声明的变量会被提升,但不会赋值。只是值的拷贝,所以修改。

dorabighead的博客 1162
上一篇: JavaScript高级程序设计学习总结一(基本概念总结)
下一篇: Android的Margin和Padding属性以及支持的长度单位
Richard__su
博客等级 码龄15年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值