从零开始学习typescript——变量

就像我们在学校学习语文、英文时候一样,最开始学习的是语法,要知道基础的结构。
在这里插入图片描述
图片中包含 变量、标识符、数据类型、运算符、字面量、表达式、控制语句等语法

变量

变量是使用给定的符号名在内存中申请存储地址,并且可以容纳某个值。
语法是:
变量 变量名:数据类型 = 变量值(字面量)

let h_w : string ="hello world"

存储位置
在定义中,我们说变量是存储在内存中,那么内存是什么呢?
内存是计算机用来存储数据和指令的硬件设备。它提供了计算机用来执行程序和处理数据的空间。

在ts中,我们更关心,栈(stack) 和 堆(Heap)的作用;
栈(Stack)
定义: 栈是一种线性结构,存储在内存中,用于存放方法调用、局部变量、函数参数以及程序执行期间的临时数据。
特点: 栈是一种后进先出(LIFO,Last In First Out)的数据结构,最后进入的数据被最先取出。
用途: 主要用于跟踪程序的执行过程、方法的调用和返回以及保存临时数据。
管理方式: 栈的管理由编译器自动处理,它在程序运行时分配和释放内存,因此存储在栈中的变量的生命周期与其作用域紧密相关。
存储内容: 局部变量(函数内部定义的变量)、方法的参数、方法调用和返回信息。
分配方式: 分配和释放内存速度较快,但是栈的大小通常比较有限,受限于系统设置。
堆(Heap)
定义: 堆是一种动态分配的内存区域,用于存储程序运行时需要动态分配的数据。
特点: 堆是一种自由存储的内存区域,由程序员手动管理内存的分配和释放。
用途: 主要用于存储动态分配的数据,比如对象、数组等。
管理方式: 堆的管理由程序员手动操作,需要手动分配和释放内存,如果没有适当地释放堆中的内存,可能会导致内存泄漏。
存储内容: 动态分配的对象和数据,比如由 new 关键字创建的对象。
分配方式: 分配和释放内存速度相对较慢,堆的大小受限于系统的虚拟内存大小和操作系统的内存管理。

基本类型的变量(如 number, boolean, string 等)在 JavaScript 引擎中通常被存储在栈内存中
对象类型的变量(如对象、数组等)在 JavaScript 引擎中通常存储在堆内存中。当你创建一个对象时,它的大小是不固定的,因此它们被存储在堆上,并且变量名(在栈上)只是一个指向堆内存地址的引用

  1. 变量关键字
  • var
    在声明变量时,可以为变量赋予一个初始值。若变量未出实话,则其默认值为undefined
  • let
    在声明变量时,可以为变量赋予一个初始值。若变量未出实话,则其默认值为undefined
  • const
    声明用于定义一个常量,定义时必须设置一个初始值
const PI = 3.14

区别
var 是es5中传统声明变量的方式;具有函数作用域;这意味着 var 声明的变量在声明它的函数内部是可见的。不管是在那个块的内部声明;可以多次声明相同的变量而不会引发错误。

var x =1; 
if(true){
  var x=10
}

let 引入了块级作用域,只在声明它的块级作用域有效;不允许重复声明同一变量;存在暂时性死区(Temporal Dead Zone,TDZ),即在变量声明之前访问变量会抛出错误。

const 声明一个常量,其值在声明后无法被重新赋值。但是对于对象或数组这样的引用类型,其指向的内容是可以修改的

  1. 变量名
    变量名也称为标识符,标识符指变量、函数、参数、类、属性等的名字。其实简单理解可以把它看成 变量值的 一个称号,就像人的姓名一样
    变量名需要满足以下规则:
  • 允许包含字母、数字、下划线和$符号
  • 允许包含unicode转义序列,如“\u0069”
  • 仅允许使用字母、unicode转义序列、下划线和$作为第一个字符,不允许使用数字作为第一个字符
  • 标识符区分大小写
  • 不允许使用保留字作为标识符;下图中是部分保留字
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/174450.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL中所的锁

为了确保复杂的事务可以安全地同时运行,PostgreSQL提供了各种级别的锁来控制对各种数据对象的并发访问,使得对数据库关键部分的更改序列化。事务并发运行,直到它们尝试获取互相冲突的锁为止(比如两个事务更新同一行时)。当多个事务同时在数据…

探索 Material 3:全新设计系统和组件库的介绍

探索 Material 3:全新设计系统和组件库的介绍 一、Material 3 简介1.1 Material 3 的改进和更新1.2 Material 3 的优势特点 二、Material 3 主题使用2.1 使用 Material3 主题2.2 使用 Material3 主题颜色 三、Material 3 组件使用3.1 MaterialButton:支持…

栈和队列java实现

栈和队列都是动态集合,且在其上进行DELETE操作所移除的元素是预先设定的。在栈中,被删除的是最近插入的元素:栈实现的是一种后进先出(last-in,first-out,LIFO) 策略。在队列中,被删去…

AT89S52单片机

目录 一.AT89S52单片机的硬件组成 1.CPU(微处理器) (1)运算器 (2)控制器 2.数据存储器 (RAM) (1)片内数据存储器 (2)片外数据存储器 3.程序存储器(Flash ROM) 4.定时器/计数器 5.中断系统 6.串行口 7.P0口、P1口、P2口和P3口 8.特殊功能寄存器 (SFR) 常用的特殊功…

子虔科技出席2023WAIC“智能制造融合创新论坛”

7月7日,2023世界人工智能大会(WAIC)闵行会场在大零号湾举办。子虔科技联合创始人周洋作为专家嘉宾受邀参与智能制造融合创新论坛大会。会上探讨了工业和制造业数字化转型的机遇、挑战和对策。其中,周洋提到,工业制造业…

51单片机的智能浇花系统【含proteus仿真+程序+报告+原理图】

1、主要功能 该系统由AT89C51单片机LCD1602显示模块DHT11温湿度模块DS1302时间模块继电器驱动水泵模块光敏传感器等模块构成。适用于智能浇花、自动浇花、智能盆栽等相似项目。 可实现基本功能: 1、LCD1602实时显示北京时间、土壤温湿度、光照强度等信息 2、DHT11采集温湿度信…

②【Hash】Redis常用数据类型:Hash [使用手册]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Redis Hash ②Redis Hash 操作命令汇总1. hset…

Apache Airflow (十三) :Airflow分布式集群搭建及使用-原因及

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…

基于Acconeer的A121-60GHz毫米波雷达传感器SDK移植及测距示例(STM32L496为例)

基于Acconeer的A121-60GHz毫米波雷达传感器SDK移植及测距示例(STM32L496为例) 工程: Keil工程资源 参考资料: A121 datasheet 1.3 A121 HAL Software Integration User Guide A121 STM32CubeIDE User Guide 官方参考示例工程&a…

linux rsyslog综合实战2

本次我们通过rsyslog服务将A节点服务器上的两个(E.g:多个日志也可以)日志(Path:/var/log/245-1.log、245-2.log)实时同步到B节点服务器目录下(Path:/opt/rsyslog/245) 1.rsyslog架构 2.环境信息 环境信息 HostnameIpAddressOS versionModuleNotersyslog1192.168.10.245CentOS…

【Docker】从零开始:3.Docker运行原理

【Docker】从零开始:3.Docker运行原理 Docker 工作原理Docker与系统的关系Docker平台架构图解 Docker 工作原理 Docker与系统的关系 Docker 是一个 Client-Server 结构的系统,Docker 守尹进程运行在王机上, 然后通过 Socket 连接从各尸端坊…

【广州华锐互动】VR溺水预防教育:在虚拟世界中学会自救!

在现代社会中,水上安全和救援行动的重要性不言而喻。尤其在自然灾害、游泳事故或航海事故中,有效的救援行动可以挽救许多生命。然而,传统的救援训练往往存在成本高、风险大、效率低等问题。在这样的背景下,虚拟现实(VR…

1.Gin 介绍

1.Gin 介绍 介绍 Gin 是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快,如果你是性能和高效的追求者,我们推荐你使用 Gin 框架。 Gin 最擅长的就是 Api 接口的高并发,如果项目的规模不大,业务相对简单&a…

JVM垃圾收集器

什么是垃圾收集器 Java虚拟机的垃圾收集器是内存回收的具体实现,主要用于回收不再使用的对象,释放内存空间。Java虚拟机提供了多种垃圾收集器,不同的垃圾收集器适用于不同的场景和需求。 在C中,对象所占的内存在程序结束运行之前…

【Spring】使用xml配置AOP

文章目录 1.前言2.xml配置AOP3. 总结 1.前言 在之前的学习中,都是使用注解的方式进行AOP的配置.其实使用xml配置文件也可以配置AOP. 2.xml配置AOP xml配置AOP方法如下: 添加相关依赖 <dependencies><dependency><groupId>org.springframework</groupId…

vue实现el-menu与el-tabs联动

效果图如下&#xff1a; 当标签栏很多的时候效果图如下&#xff1a; 左侧菜单布局 &#xff08;$route.path高亮显示激活路由 :default-active"$route.path"&#xff09; <el-menu:default-active"$route.path"class"el-menu-vertical-demo"b…

【Hello Go】Go语言文本文件处理

文本文件处理 字符串处理字符串操作ContainsJoinindexrepeatReplaceSplitTrimFields 字符串转换AppendFormatParse 正则表达式Json处理编码Json通过结构体生产Json通过map生产json 解码Json解析到结构体解析到interface 文件操作相关api介绍建立和打开文件关闭文件写文件读文件…

深度学习卫星遥感图像检测与识别 -opencv python 目标检测 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **深度学习卫星遥感图像检测与识别 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐…

优秀智慧园区案例 - 三亚市崖州湾科技城智慧园区,先进智慧园区建设方案经验

一、项目背景 三亚崖州湾科技城作为海南自贸港建设的重点园区&#xff0c;是重点推进的海南自贸港先导项目之一。崖州湾科技城全力抢抓有利时机&#xff0c;进一步拓宽发展思路&#xff0c;持续深化体制机制创新&#xff0c;牢牢把握“打造产学研城深度融合的聚集地”这一核心…