理解 JavaScript 变量和数据类型的基础

发布: (2026年2月22日 GMT+8 19:07)
8 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容,我会按照要求保留源链接、格式和技术术语,仅翻译正文部分。

什么是变量?

把变量想象成一个 盒子

  • 你把名字放进去。
  • 盒子唯一的职责是 保存信息,以便以后使用。

在 JavaScript 中,这个盒子被称为 变量

每个程序——无论是一个简单的计算器还是像 Netflix 这样的大型应用——都依赖变量来存储和管理数据。如果你不理解变量,你实际上并没有在编程——只是在敲垃圾。

使用变量的关键原因

  • 重用值
  • 更新值
  • 使程序动态化
  • 编写更清晰的代码

简单示例

let name = "Ritam";
console.log(name);
  • name → 变量
  • "Ritam" → 存储在其中的值

可以这样想:

[ name ]  →  "Ritam"

没有变量,程序将会僵硬且毫无用处。

在 JavaScript 中声明变量

JavaScript 为我们提供了 种声明变量的方式:

声明引入时间典型用法
varES1 (1997)旧代码,函数作用域
letES6 (2015)块作用域,可变
constES6 (2015)块作用域,不可变

var

var age = 20;
  • 最早也是最原始的变量声明方式。
  • 函数作用域(如果在函数外声明,则为全局作用域)。
  • 可以重新声明和重新赋值,这常常导致错误。

提示: 在现代代码中你几乎不会使用 var。请优先使用 letconst

let

let city = "Kolkata";
  • 块作用域。
  • 可以 重新赋值,但在同一作用域内不能重新声明。
let score = 10;
score = 20; // ✅ 允许

const

const country = "India";
  • 块作用域。
  • 初始化后不能重新赋值
const PI = 3.14;
PI = 3.14159; // ❌ 错误
console.log(PI); // 3.14

何时使用 const – 当一个值应保持不变时(例如配置值、固定引用)。

想了解 letconst 引入背后的更深层原因,请参阅我之前的博客 [here]

Source:

数据类型

数据类型定义了变量中存储的值的种类。JavaScript 有两大类:

  1. 原始数据类型
  2. 非原始(引用)数据类型

本文将介绍 原始 类型。后续文章会深入对象、数组、函数等内容。

⚠️ 注意: 这是一篇 基础 概览。完整参考请查阅 MDN Web Docs

原始类型概览

类型描述示例
String文本数据,使用引号(""'')包裹。let name = "Ritam";
Number数值数据(包括整数和浮点数)。let age = 21;
Boolean逻辑真/假。let isStudent = true;
null有意的空值。let result = null;
undefined已声明但未赋值的变量。let data; console.log(data); // undefined
BigInt超出安全整数范围的超大整数。let big = 12345678901234567890n;
Symbol唯一标识符。const id = Symbol("rune_of_fire");

String

let name = "Ritam";
let programming = "JavaScript";
let id = "123"; // 仍然是字符串!

Number

let age = 21;
let price = 99.99;

Boolean

let isStudent = true;
let isLoggedIn = false;

null

let result = null;

undefined

let data;
console.log(data); // undefined

注意: 虽然可以显式地把 undefined 赋给变量,但通常不推荐这样做,因为会增加调试难度。

BigInt

let bigNumber = 123456789012345678901234567890n; // 末尾的 "n"
let bigValue = BigInt(12345678901234567890);       // 使用构造函数

什么时候需要 BigInt

  • 金融系统(精确的货币计算)
  • 加密学
  • 科学计算
  • 大型数据库 ID

Symbol

const uniqueRuneId1 = Symbol("rune_of_fire");
const uniqueRuneId2 = Symbol("rune_of_fire");

console.log(uniqueRuneId1 === uniqueRuneId2); // false

典型用途

  • 唯一的对象属性键
  • 高级 JavaScript 模式(例如迭代器)
  • 内置机制(例如 Symbol.iterator

typeof 运算符

console.log(typeof "Ritam"); // "string"
console.log(typeof 21);      // "number"
console.log(typeof true);    // "boolean"

⚡ 小练习: typeof null 返回什么?在运行代码之前先思考一下!

深入理解 typeof 很重要,因为它的结果并不总是符合预期(例如,typeof null"object")。我们将在后续文章中更详细地探讨这个运算符。

快速比较:var vs let vs const

Featurevarletconst
Scope函数作用域或全局块级作用域块级作用域
Hoisting是(初始化为 undefined是(暂时性死区)是(暂时性死区)
Re‑declaration在相同作用域内允许重新声明在相同块级作用域内不允许在相同块级作用域内不允许
Re‑assignment允许允许不允许 在初始化后
Use case遗留代码,极少推荐值会变化的变量常量、配置值

JavaScript 中的变量声明

Featurevarletconst
Signed?✅ 是✅ 是❌ 否
Scope type函数块级块级
Hoisting提升提升 – 但 Temporal Dead Zone (TDZ) 仍适用提升 – 但 Temporal Dead Zone (TDZ) 仍适用
Modern usage?❌ 避免✅ 是✅ 是

实用规则

  • 默认使用 const
  • 当需要更改值时使用 let
  • 在现代 JavaScript 中避免使用 var

为什么变量很重要

变量不仅仅是初学者的话题——它们是以下内容的基础:

  • 函数
  • 循环
  • API
  • React 这样的框架
  • 使用 Node.js 的后端开发

如果你误解了变量和数据类型,所有基于它们构建的东西都会变得不稳定。

掌握变量让你拥有真正的控制

  • 如何 声明 变量
  • 何时使用 letconst
  • 数据类型 表示什么

…and this knowledge translates into solid, maintainable code.

入门

  1. 从简单开始。
  2. 循序渐进地构建理解。

这就是实现真正领悟的方式。

关注获取更多面向初学者的核心软件工程概念拆解。

0 浏览
Back to Blog

相关文章

阅读更多 »

Undefined 与 Not Defined

Undefined undefined 是 JavaScript 中的一个特殊关键字。它表示变量已经在内存中存在,但尚未被赋值。在创建阶段…