当前位置:首页 > 技术 > 正文内容

JavaScript 基础核心:变量、常量与内存模型

访客 技术 2026年7月8日 1

一、常量与字面量

在 JavaScript 中,常量(也称为字面量)代表不可更改的固定值。它们是代码中最基础的数据单元。

1.1 字面量分类

  • 数值字面量:包括整数和浮点数。例如:8080, 0.5
  • 字符串字面量:由单引号、双引号或反引号包裹的文本。例如:'Hello', "World"
  • 布尔字面量:逻辑值 truefalse

1.2 自定义常量 (ES6+)

使用 const 关键字声明的标识符为自定义常量,一旦初始化,其引用地址不可变更。

const SERVER_PORT = 3000;
// SERVER_PORT = 4000; // 此时会抛出 TypeError: Assignment to constant variable

二、变量的声明与管理

变量是程序在内存中申请的一块存储空间,用于存放可变的数据。开发者通过变量名来访问或修改其中的内容。

2.1 声明方式演进

JavaScript 提供了三种主要的声明方式:

  • var(传统方式):存在变量提升(Hoisting)现象,允许重复声明,作用域为函数级或全局。
  • let(现代方式):块级作用域,不存在变量提升,禁止在同一作用域内重复声明。
  • const(常量声明):块级作用域,声明时必须赋值,且后续不可重新赋值。
// 变量初始化与修改
let currentSpeed = 60;
currentSpeed = 85; 

// 批量声明
let x = 1, y = 2, z = 3;

// 链式赋值(需注意变量作用域风险)
let a, b;
a = b = 100;

2.2 声明的状态细节

  • 只声明未赋值:变量的默认值为 undefined
  • 隐式全局声明:不使用关键词直接赋值(如 globalVar = 1),该变量会被挂载到全局对象(如 window),但在严格模式下会报错,不推荐使用。

三、标识符命名规范

标识符是指开发者定义的变量名、函数名、属性名等。在 JavaScript 中,标识符必须遵循以下规则:

  1. 组成字符:必须由字母、数字、下划线 (_) 或美元符号 ($) 组成。
  2. 首字符限制:严禁以数字开头。
  3. 大小写敏感UserRoleuserRole 是两个完全不同的标识符。
  4. 排除关键字:不能使用 if, while, class 等系统关键字。
  5. 推荐风格:通用做法是使用小驼峰命名法(lowerCamelCase),例如 requestDataisUserLoggedIn

四、关键字与保留字

关键字是语言本身预留并具有特殊功能的单词,如 export, import, async, await, instanceof 等。保留字则是目前尚未使用但未来可能被定义为关键字的单词,如 enum, public, interface 等。在编码时应完全避开这些单词作为标识符。

五、数据类型与内存机制

JavaScript 是一种动态类型语言,变量的具体类型在运行时由其存储的值决定。

5.1 数据类型分类

分类 包含类型
基本数据类型(值类型) String, Number, Boolean, Undefined, Null, Symbol, BigInt
引用数据类型 Object (包含 Array, Function, Date, RegExp 等)

5.2 内存布局:栈(Stack)与堆(Heap)

理解数据的存储机制对于避免代码逻辑错误至关重要:

  • 栈内存:存放基本数据类型。它们占据固定大小的空间,赋值时是值拷贝
  • 堆内存:存放引用数据类型(对象)。变量在栈中存储的是指向堆中实际数据的内存地址(引用)
// 情况 A:基本类型
let score1 = 90;
let score2 = score1;
score1 = 100;
console.log(score2); // 输出 90,不受 score1 影响

// 情况 B:引用类型
let user1 = { id: 101, name: 'Alice' };
let user2 = user1; // 拷贝的是内存地址
user2.name = 'Bob';
console.log(user1.name); // 输出 'Bob',因为两者指向堆中同一个对象
标签: JavaScript

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。