⚡ JavaScript

变量与数据类型 — JavaScript

这是什么以及为什么需要它?

想象一下,你的电脑是一张巨大的书桌。上面放着课本、笔记本、笔,当然还有你的智能手机。为了快速找到需要的东西,你把每样东西都放在固定的位置。编程中也是如此:当程序运行时,它需要某个地方来存储数字、文字和其他数据。为此,我们使用变量。

变量就像一个带标签的盒子。在标签上你写上名字(例如,"myAge"),然后把值(例如,12)放进去。当你需要这个值时,你只需说:"把名为myAge的盒子里的东西给我"。

数据类型是规定盒子里到底能放什么的规则。一个盒子只能放数字,另一个只能放文本,第三个只能放正确或错误的陈述(是/否)。如果你试图把文本放进数字盒子里,电脑就会混乱。因此,了解有哪些类型以及如何正确使用它们非常重要。

在JavaScript (JS) 中,数据类型的工作方式与Python非常相似,但有一些重要的区别。例如,在Python中你写 age = 12,Python自己会推断出12是一个数字。在JavaScript中也是如此,但有一些细微差别:JS有时过于"自作聪明",可能会做出与你预期不符的事情。因此,我们将学习如何明确指定我们想要什么。

为什么需要这个?想象一下,你在编写一个计算器程序。如果你混淆了类型,把数字5和文本"5"相加,你得到的将不是10,而是"55"(五个5连在一起)。电脑会按照你说的去做,而不是按照你想的去做。因此,了解数据类型是一种超能力,可以帮助你避免犯愚蠢的错误。

带解释的代码示例

让我们直接进入实践。打开任何代码编辑器(例如,按F12并转到控制台选项卡,使用浏览器内置的编辑器),或者使用像CodePen或JSFiddle这样的在线编辑器。编写代码并观察结果。

示例 1: 创建数字变量

// 创建一个名为"myAge"的变量,并将数字12放入其中
let myAge = 12;

// 创建一个变量"pi",并将小数3.14放入其中
let pi = 3.14;

// 创建一个变量"negativeNumber",并将负数-5放入其中
let negativeNumber = -5;

// 在屏幕上输出值
console.log("我的年龄:", myAge);   // 输出: 我的年龄: 12
console.log("圆周率:", pi);         // 输出: 圆周率: 3.14
console.log("负数:", negativeNumber); // 输出: 负数: -5

// 现在尝试将两个数字相加
let sum = myAge + pi;  // 12 + 3.14 = 15.14
console.log("年龄和圆周率之和:", sum); // 输出: 年龄和圆周率之和: 15.14

// 注意:在JavaScript中,小数部分用点号分隔,而不是逗号!
// 如果你写成3,14——那将是一个错误,因为逗号有其他含义。

解释: 我们使用了关键字 let。它告诉JavaScript:"创建一个新盒子"。之后我们写了变量名 (myAge)、等号 (=) 和值 (12)。这里的等号并不意味着数学意义上的"等于"。它的意思是"放入盒子中"。在Python中,你会写同样的东西:my_age = 12。区别仅在于JavaScript习惯使用 camelCase(第一个单词小写,后续每个单词首字母大写),而Python使用 snake_case(单词之间用下划线连接)。

示例 2: 文本字符串 (String)

// 字符串是任何文本。它需要用引号括起来。
let myName = "安娜";      // 双引号
let myCity = '莫斯科';    // 单引号——同样有效!
let myHobby = `绘画`; // 反引号——现代方式

// 输出字符串
console.log("我的名字是:", myName);          // 输出: 我的名字是: 安娜
console.log("我住在城市:", myCity);     // 输出: 我住在城市: 莫斯科
console.log("我的爱好:", myHobby);          // 输出: 我的爱好: 绘画

// 字符串可以拼接(连接)
let greeting = "你好, " + myName + "! 你住在 " + myCity + "。";
console.log(greeting); // 输出: 你好, 安娜! 你住在 莫斯科。

// 另外,可以使用反引号直接将变量插入到字符串中
let greetingModern = `你好, ${myName}! 你住在 ${myCity}。`;
console.log(greetingModern); // 输出相同的内容: 你好, 安娜! 你住在 莫斯科。

// 注意:${...} 是一种特殊语法,仅在反引号内有效。
// 这非常方便,不需要一直使用加号!

解释: 在Python中,字符串也可以用单引号或双引号创建。但在JavaScript中,还有一种额外的类型——反引号 (`` ` ``)。它们允许使用 ${} 将变量直接插入到文本中。这被称为模板字符串 (template strings)。在Python中,这使用 f-strings:f"你好, {my_name}!"。原理相同,只是语法不同。

示例 3: 布尔类型 (Boolean) — 真或假

// 布尔类型只能有两个值:true (真) 或 false (假)
let isStudent = true;      // 我是学生——这是真的
let hasPets = false;       // 我没有宠物——这是假的

console.log("我是学生吗?", isStudent);  // 输出: 我是学生吗? true
console.log("我有宠物吗?", hasPets); // 输出: 我有宠物吗? false

// 布尔值通常是比较的结果
let myAge = 12;
let drivingAge = 18;

let canDrive = myAge >= drivingAge;  // 12 >= 18? 这是假的!
console.log("我能开车吗?", canDrive); // 输出: 我能开车吗? false

// 更多比较示例:
let number1 = 10;
let number2 = 20;

console.log("10大于20吗?", number1 > num