从零开始学习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转义序列、下划线和$作为第一个字符,不允许使用数字作为第一个字符
  • 标识符区分大小写
  • 不允许使用保留字作为标识符;下图中是部分保留字
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多篇论文介绍-可变形卷积

01 具有双层路由注意力的 YOLOv8 道路场景目标检测方法 01 摘要: 随着机动车的数量不断增加,道路交通环境变得更复杂,尤其是光照变化以及复杂背景都会干扰目标检测算法的准确性和精度,同时道路场景下多变形态的目标也会给检测任务造成干扰&am…

浅谈低压绝缘监测及定位系统在海上石油平台的研究与应用

安科瑞 华楠 摘要:海上石油平台低压系统与陆地电力系统有很大区别,其属于中性点绝缘系统,在出现单相接地故障时,系统允许带故障正常运行2 h,保证海上重要电气设备不会立即关停。现以渤海某海上平台为例,其…

可上手 JVM 调优实战指南

文章目录 为什么要学 JVM一、JVM 整体布局二、Class 文件规范三、类加载模块四、执行引擎五、GC 垃圾回收1 、JVM内存布局2 、 JVM 有哪些主要的垃圾回收器?3 、分代垃圾回收工作机制 六、对 JVM 进行调优的基础思路七、 GC 情况分析实例八、最后总结 全程可上手JVM…

steam游戏找不到steam_api64.dll,分享三个有效的解决方法

在现代科技发展的时代,游戏已经成为了许多人生活中不可或缺的一部分。而Steam作为全球最大的数字发行平台之一,拥有着庞大的游戏库和活跃的用户群体。然而,在使用Steam时,有些用户可能会遇到Steam_api64.dll丢失的问题&#xff0c…

我在Vscode学OpenCV 几何变换(缩放、翻转、仿射变换、透视、重映射)

几何变换指的是将一幅图像映射到另一幅图像内的操作。 cv2.warpAffine:使用仿射变换矩阵对图像进行变换,可以实现平移、缩放和旋转等操作。cv2.warpPerspective:使用透视变换矩阵对图像进行透视变换,可以实现镜头校正、图像纠偏等…

Positive证书:最便宜的SSL证书

在当今数字化的时代,网上交易和信息传输已经成为我们生活中不可或缺的一部分。然而,随着网络犯罪的增加,确保在线信息的安全性变得尤为重要。Positive证书作为一种经济实惠的数字证书,在提供有效安全性的同时,为用户提…

C# Onnx 特征匹配 DeDoDe 检测,不描述---描述,不检测

目录 介绍 效果 模型信息 项目 代码 下载 介绍 github地址:https://github.com/Parskatt/DeDoDe DeDoDe 🎶 Detect, Dont Describe - Describe, Dont Detect, for Local Feature Matching The DeDoDe detector learns to detect 3D consisten…

Redis主从,缓存击穿,雪崩,哨兵等问题

Redis的性能管理: Redis的数据缓存在内存当中 INFO memory used_memory:853808 Redis中数据占用的内存 used_memory_rss:3715072 Redis向操作系统申请的内容 used_memory_peak:853808 Redis使用的内存的峰值 系统巡检:硬件巡检,数据库…

解析IBM SPSS Statistics 26 forMac/win中文版:全面统计分析解决方案

作为一款强大的统计分析软件,IBM SPSS Statistics 26(spss统计软件)在全球范围内被广泛使用。无论是学术研究、市场调研还是商业决策,SPSS统计软件都能提供全面的解决方案,帮助用户快速、准确地分析数据。 首先&#…

第二证券:什么是权重股?权重股可以长期持有吗?

权重版块是指该版块股票市值巨大,在股票总市值中的比重很大(即权重很大),其涨跌对股票指数的影响很大的一个版块,比方,商场上的证券、钢铁、银行、保险、石油等板块的个股。 权重股适合长时间持有&#xf…

Mac- Iterm 2 (替换mac terminal 终端的下一代终端工具)

1.应用场景 主要用于macOS中作为终端工具使用, 执行终端命令, Iterm 2 (替换mac terminal 终端的下一代终端工具) 2.学习/操作 1.文档阅读 chatgpt & 其他资料 2.整理输出 2.1 是什么 Iterm 2 (替换mac terminal 终端的下一代终端工具) 2.2 为什么需要「应用场景」 macOS…

skywalking中gateway的拓扑图没有出现

背景: 刚开始的时候gateway没有出现,后来百度说添加插件的jar包, apm-spring-cloud-gateway-2.1.x-plugin-8.15.0.jar apm-spring-webflux-5.x-plugin-8.15.0.jar 然后解决了gateway节点出来了, 但是:拓扑图却是User指…

利用NVIDIA DALI读取视频帧

1. NVIDIA DALI简介 NVIDIA DALI全称是NVIDIA Data Loading Library,是一个用GPU加速的数据加载和预处理库,可用于图像、视频和语音数据的加载和处理,从而为深度学习的训练和推理加速。 NVIDIA DALI库的出发点是,深度学习应用中…

文心大模型商业化领跑,百度在自我颠覆中重构生长力

随着科技巨头竞逐AI大模型,人工智能技术成为今年最受瞩目的新技术。但是,AI大模型的创新之路,还缺少一个足够有力的商业化答案。 作为全球最先发布大模型的互联网大厂,百度能否加速大模型的应用落地,以及文心大模型能…

C++ Boost 实现异步端口扫描器

端口扫描是一种用于识别目标系统上哪些网络端口处于开放、关闭或监听状态的网络活动。在计算机网络中,端口是一个虚拟的通信端点,用于在计算机之间传输数据。每个端口都关联着特定类型的网络服务或应用程序。端口扫描通常是网络管理员、安全专业人员用来…

springboot项目中获取业务功能的导入数据模板文件

场景: 在实际业务场景中,经常会遇到某些管理功能需要数据导入共功能,但既然是导入数据,肯定会有规则限制,有规则就会有数据模板,但这个模板一般是让客户自己下载固定规则模板,而不是让客户自己随便上传模板。下面介绍直接下载模板 一、下载模板示例 1、在项目的…

Mysql查看Binlog文件

前期准备 检查是否开启binlog mysql> SHOW VARIABLES LIKE log_bin; // 或者 mysql> SHOW VARIABLES LIKE log%;ON代表开启,OFF代表关闭。如为OFF需 开启 后才能查看,但只能查看开启之后时间点的。 查看binlog文件有哪些 一般yum安装的mysql…

Program Header Table(转载)

程序头表与段表相互独立,由ELF文件头统一管理。 程序头表负责ELF文件从文件到加载后映像的映射关系,一般只有可执行文件包含。 1. segment和section segment: 程序头表项描述的对象称为segment,即elf文件加载后的数据块; 它提供…

微服务开发中,使用AOP和自定义注解实现对权限的校验

一、背景 微服务开发中,暴露在外网的接口,为了访问的安全,都是需要在http请求中传入登录时颁发的token。这时候,我们需要有专门用来做校验token并解析用户信息的服务。如下图所示,http请求先经过api网关,网…

[点云分割] 欧式距离分割

效果&#xff1a; 代码&#xff1a; #include <iostream> #include <chrono>#include <pcl/ModelCoefficients.h> // 模型系数的定义 #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> // 各种点云数据类型 #include <pcl/sample_c…