如何存储你需要的信息:变量——WEB开发系列42

变量是一种用于存储数据的基本工具。它允许我们在代码中给某个数据赋予一个名字,便于在后续的代码中引用、更新、甚至重新赋值。


一、什么是变量?

变量本质上是一个“容器”,它存储特定的信息或数据。你可以把变量想象成一个标签,标签上写着名字,贴在一个容器上,而容器内装着数据。你可以通过这个标签随时找到并引用这个数据,甚至在代码执行的过程中改变它的值。

变量的作用:

  1. 存储数据:变量可以存储用户输入的值、API 调用返回的数据、计算的结果等等。
  2. 提高可读性:通过给数据起一个清晰的名字,变量能让代码变得更加易于理解。
  3. 便于维护:一旦需要修改某个值,只需要更新一次定义该变量的地方,而不需要在代码的每一个引用位置都修改。

二、声明变量

在 JavaScript 中,声明变量的方式有多种,最常见的是使用 ​​var​​、​​let​​ 和 ​​const​​​。不同的声明方式会带来不同的作用域和行为,尤其是在处理变量的生命周期时差别明显。

var age;    // 声明一个变量,但未赋值
let name;   // 使用 let 声明一个变量
const pi;   // 使用 const 声明一个常量(注意:const 必须在声明时赋值)

三、初始化变量

在声明变量之后,可以给它赋值,这个过程称为初始化。初始化的意思就是给变量一个初始值,让它具有意义。如果我们声明了变量但没有赋值,变量的值会默认为 ​​undefined​​。

var age = 25;          // 初始化 age 变量为 25
let name = "Alice";    // 初始化 name 变量为字符串 "Alice"
const pi = 3.14;       // 初始化常量 pi 为 3.14

注意,​​const​​​ 声明的变量在初始化后不能再被重新赋值,如果尝试更新它的值,代码会报错。

pi = 3.1415;   // 会抛出一个错误,因为 pi 是常量

四、var 与 let 的区别

作用域不同

​var​​ 的作用域是函数级别的,而 ​​let​​ 的作用域是块级别的。

if (true) {
  var a = 10;  // var 在整个函数或全局范围内有效
  let b = 20;  // let 只在代码块 { } 中有效
}

console.log(a);  // 输出 10
console.log(b);  // 报错:b 没有定义

由于 ​​var​​ 的作用域是函数级别的,所以它会忽略代码块 ​​{}​​,而 ​​let​​​ 则严格遵守块作用域,仅在代码块内部有效。

变量提升

​var​​ 声明的变量会被“提升”,即声明会被提升到当前作用域的顶部,而 ​​let​​ 声明的变量不会。

console.log(x);  // 输出 undefined
var x = 5;

console.log(y);  // 报错:y 不能在声明前使用
let y = 10;

在这个例子中,​​var​​ 声明的变量 ​​x​​ 虽然在使用前未被赋值,但声明本身已经“被提升”到了顶部,因此不会抛出错误。而 ​​let​​ 声明的变量 ​​y​​​ 则必须在声明之后才能使用。


五、更新变量(关于变量命名的规则)

变量名在编程中至关重要,它不仅要简洁易懂,还要遵循一些基本规则:

  1. 只能包含字母、数字、下划线(_)和美元符号($)
  2. 不能以数字开头,比如 ​​123name​​ 是非法的变量名。
  3. 区分大小写,​​name​​ 和 ​​Name​​ 是两个不同的变量。
  4. 不能是保留字,如 ​​function​​、​​return​​​ 等 JavaScript 保留字不能作为变量名。

六、更新变量

一旦声明了变量,我们可以随时更新它的值(​​const​​ 除外)。更新变量的过程也很简单,直接赋予它新的值即可:

let age = 25;
age = 30;    // 更新 age 变量为 30
console.log(age);  // 输出 30

不过,需要注意的是,常量(​​const​​​)是无法重新赋值的,这也是它的特性。


七、变量类型

JavaScript 中有多种数据类型,每个变量都可以存储不同类型的数据。在 JavaScript 中,最常见的变量类型包括:

  1. Number:用于存储数字,包括整数和浮点数。
  2. String:用于存储文本或字符串。
  3. Boolean:用于存储布尔值,即 ​​true​​ 或 ​​false​​。
  4. Array:一种特殊类型的对象,用于存储多个值。
  5. Object:用于存储键值对。

Number(数字)

​Number​​ 类型可以存储整数和浮点数:你可以在变量中存储数字,不论这些数字是像 42(也叫整数)这样,或者像 3.14 这样的小数(也叫做浮点数)。与其他编程语言不同,在 JavaScript 中你不需要声明一个变量的类型。当你给一个变量数字赋值时,不需要用引号括起来。

let a = 42;       // 整数
let b = 3.14;     // 浮点数

String(字符串)

字符串用于存储文本,它可以由单引号、双引号或反引号包围:字符串是文本的一部分。当你给一个变量赋值为字符串时,你需要用单引号或者双引号把值给包起来,否则 JavaScript 将会把这个字符串值理解成别的变量名。

let str1 = "Hello";      // 双引号
let str2 = 'World';      // 单引号
let str3 = `JavaScript`; // 反引号(模板字符串)

Boolean(布尔值)

布尔值只有两个可能的取值:​​true​​ 和 ​​false​​。它们通常用于条件判断:它们通常被用于在适当的代码之后,测试条件是否成立。

let isAdult = true;
let hasLicense = false;

Array(数组)

数组是一种特殊的对象,它用于存储有序的值列表。每个值都有一个对应的索引,索引从 0 开始:

let fruits = ["Apple", "Banana", "Orange"];
console.log(fruits[0]);  // 输出 "Apple"

Object(对象)

对象是键值对的集合,每个键都有一个对应的值。对象可以用于存储复杂的数据结构:对象是现实生活中的模型的一种代码结构。你可以有一个简单的对象,代表一个停车场,并包含有关其宽度和长度的信息,或者你可以有一个代表一个人的对象,并包含有关他们的名字,身高,体重,他们说什么语言,如何说“你好”等等。

let person = {
  name: "John",
  age: 30,
  isMarried: false
};

console.log(person.name);  // 输出 "John"

八、动态类型

JavaScript 是一种动态类型语言,这意味着变量的类型可以在运行时动态改变。换句话说,变量在声明时不需要指定类型,后续可以存储任何类型的数据。

let data = 10;     // data 是一个数字
data = "Hello";    // data 现在是一个字符串
data = true;       // data 现在是一个布尔值

这种灵活性使得 JavaScript 非常强大,但也带来了一定的潜在问题,特别是在调试时,变量类型的频繁变化可能导致不可预见的错误。因此,虽然动态类型很方便,但在实际编程中要谨慎使用。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值