从零开始学习typescript——变量

news2024/9/25 21:23:25

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

变量

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

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.coloradmin.cn/o/1236464.html

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

相关文章

人工智能的时代---AI的影响

人工智能(AI)是当前科技领域的一个热门话题,它正在以前所未有的速度改变着我们的生活方式和工作方式。从智能家居到自动驾驶,从智能医疗到智能金融,人工智能正在渗透到我们生活的方方面面。在这篇文章中,我…

如何在3dMax中使用Python按类型选择对象?

如何在3dMax中使用Python按类型选择对象? 3dMax提供了pymxs API,这是MAXScript的Python包装器,可帮助您扩展和自定义3dMax,并更轻松地将其集成到基于Python的管道中。 pymxs模块包含一个运行时成员,该成员提供对MAXSc…

Android HAL学习 及 与BSP的区别

Android HAL学习 及 与BSP的区别 参考链接: 1、https://www.cnblogs.com/looner/articles/11579335.html 2、https://blog.csdn.net/leesan0802/article/details/124087630 3、https://zhuanlan.zhihu.com/p/336531442 在HAL的学习之前,我们来先了解…

909-2015-T2

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 编写算法,删除二叉搜索树(二叉排序树)的最小元素。叙述算法思想并给出算法实现,分析算法复杂性。二叉树采用链式存储结构,节点结构如下:…

利用逻辑过期解决缓存击穿问题

需求:修改根据id查询商铺的业务,基于逻辑过期方式来解决缓存击穿问题 思路分析:当用户开始查询redis时,判断是否命中,如果没有命中则直接返回空数据,不查询数据库,而一旦命中后,将v…

实验(四):指令部件实验

一、实验内容与目的 实验要求: 利用CP226实验仪上的小键盘将程序输入主存储器EM,通过指令的执行实现微程序控制器的程序控制。 实验目的: 1.掌握模型机的操作码测试过程; 2.掌握模型机微程序控制器的基本结构以及程序控制的基本原…

GDB Debugging Notes

1 Debugging programs using gdb 1.1 gdb简介 gdb是一个功能强大的调试工具,可以用来调试C程序或C程序。在使用这个工具进行程序调试时,主要涉及下面几个方面的操作: 启动程序:在启动程序时,可以设置程序运行环境。设置断点:程序…

Linux socket编程(5):三次握手和四次挥手分析和SIGPIPE信号的处理

在我之前写的Wireshark抓包:理解TCP三次握手和四次挥手过程中,通过抓包分析了TCP传输的三次握手和四次挥手的过程。在这一节中,将分析在Linux中的三次握手和四次挥手的状态和过程,另外还有一个在我们编程过程中值得注意的SIGPIPE信…

水果音乐制作软件FL Studio21.2中文版新功能介绍

FL Studio21.2中文版,一般又称水果音乐制作软件。 FL Studio 21.2简称FL,全称FruityLoopsStudio,因此国人习惯叫它"水果"。它让你的计算机就像是全功能的录音室,大混音盘,非常先进的制作工具,让…

ZYNQ_project:lcd_pic_400x400

在lcd液晶屏上显示400x400像素的图片, 像素信息通过电脑的串口调试助手,发送给fpga,存储在例化的双端口ram中, 在要显示图像区域,读取ram中的像素信息。 模块框图: 时序图: 代码:…

代码随想录刷题】Day16 二叉树03

文章目录 1.【104】二叉树的最大深度(优先掌握递归)1.1 前言1.2 题目描述1.3 递归法java代码实现1.4 迭代法java代码实现1.5 相关练习题【559】N叉树的最大深度 2.【111】二叉树的最小深度(优先掌握递归)2.1 题目描述2.2 递归法ja…

新建模板,或组件自适应

1,***一定要改为固定布局(才可以自适应) 2, 3, 4,系统序号“1”就是第一根柱 5,系列-自动-配色这里1就是第一根柱颜色,2..... 6,坐标柱 标红的去掉,在那里设…

seismicunix基础-声波波动方程推导

seismicunix基础-声波波动方程推导 接触波动方程的研究人员都绕不开这个公式,这是在一维状态下波动方程 但是对于这个方程是怎样来的很少有人能说清楚,其中涉及到牛顿第二运动定律,物体的加速度与受到的力有关。 假设一维弦是大量紧密连接的质…

Python Web框架的三强之争:Flask、Django和FastAPI

JetBrains 公布 2022 Python 开发者调查结果。 完整报告地址:https://lp.jetbrains.com/zh-cn/python-developers-survey-2022/ 这是由 Python 软件基金会 (PSF) 和 JetBrains 共同开展的第六次官方年度 Python 开发者调查,回复于 2022 年 10 月至 12 …

SpringBoot:ch02 配置文件(日志)

前言 简单介绍 Spring Boot 中常见的配置文件类型&#xff0c;如 application.properties 和 application.yml 等&#xff0c;并说明它们各自的特点和用途。 一、前期准备 1、新建项目&#xff0c;结构如下 2、添加依赖 <?xml version"1.0" encoding"UTF…

七、HDFS文件系统的存储原理

1、总结 之所以把总结放在文件开头&#xff0c;是为了让读者对这篇文章有更好的理解&#xff0c;&#xff08;其实是因为我比较懒……&#xff09; 对于整个HDFS文件系统的存储原理&#xff0c;我们可以总结为一句话&#xff0c;那就是&#xff1a; 分块备份 2、存储结构和问题…

智能座舱架构与芯片- (4) 硬件篇 中

2.4 高速视频传输(GMSL) 为了解决未来汽车系统所面临的问题&#xff0c;美信(Maxim)推出了全新下一代GMSL技术&#xff0c;即吉比特多媒体串行链路(GMSL)串行器和解串器&#xff0c;用来支持未来ADAS和信息娱乐系统要求的宽带、互联复杂度和数据完整性的要求。 GMSL技术可以支…

图Graph的存储、图的广度优先搜索和深度优先搜索(待更新)

目录 一、图的两种存储方式 1.邻接矩阵 2.邻接表 生活中处处有图Graph的影子&#xff0c;例如交通图&#xff0c;地图&#xff0c;电路图等&#xff0c;形象的表示点与点之间的联系。 首先简单介绍一下图的概念和类型&#xff1a; 图的的定义&#xff1a;图是由一组顶点和一…

webpack 配置

1、基础配置 // node js核心模塊 const path require(path) // 插件是需要引入使用的 const ESLintPlugin require(eslint-webpack-plugin) // 自动生成index.html const HtmlWebpackPlugin require(html-webpack-plugin); // 将css文件单独打包&#xff0c;在index.html中…

Windows系统如何安装与使用TortoiseSVN客户端,并实现在公网访问本地SVN服务器

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统&#xff0c;它与Apache Subversion&#xff08;SVN&#xff09;集成在一起&#xff0c;提供了一个用户友好的界面&#xff0c;方便用…