第一章 入门 【5.定义变量】

5.定义变量

  5.1  举一个例子

如果将变量想象成一个“数据”的盒子,盒子上有一个唯一的标注盒子名字的贴纸。这样我们能更轻松地掌握“变量”的概念。

例如,变量 message 可以被想象成一个标有 "message" 的盒子,盒子里面的值为 "Hello!" :

我们可以在盒子内放入任何值。

并且,这个盒子的值,我们想改变多少次,就可以改变多少次:

let message;
message = 'Hello!';
message = 'World!'; // 值改变了
alert(message);

当值改变的时候,之前的数据就被从变量中删除了:

我们还可以声明两个变量,然后将其中一个变量的数据拷贝到另一个变量。

let hello = 'Hello world!';
let message;
// 将字符串 'Hello world' 从变量 hello 拷贝到 message
message = hello;
// 现在两个变量保存着相同的数据
alert(hello); // Hello world!
alert(message); // Hello world!
  5.2  定义变量的 var let const 区别
  • var 存在变量提升, let / const 没有;
  • var 可以重复声明, let / const 不能;
  • let / const 存在临时性死区;
  • const 是常量,不能重新赋值;
  • var / let 是变量,能重新赋值;

let — 现代的变量声明方式。

var — 老旧的变量声明方式。一般情况下,我们不会再使用它。

const — 类似于 let,但是变量的值无法被修改。

  5.3  变量提升

变量提升(Hoisting)是JavaScript中变量和函数声明在代码执行前被自动提升至其作用域顶部的行为。

核心概念

变量提升是JavaScript引擎在编译阶段对代码的预处理机制,具体表现为:

  1. var声明的变量‌:声明部分被提升至作用域顶部,但赋值保留原位,因此未赋值时访问值为undefined。‌‌

  2. 函数声明‌:整体(包括函数体)被提升,可在声明前调用。

  3. let/const声明‌:不会被提升,存在暂时性死区(TDZ),声明前访问会触发ReferenceError。‌‌

变量提升

console.log(a); // 输出undefined
var a = 1;

等效于

var a; // 声明提升
console.log(a);
a = 1; // 赋值保留原位

函数提升

foo(); // 正常执行
function foo() {}

而函数表达式(如var bar = function(){})仅变量名被提升,调用会报错。‌‌

关键区别与注意事项

  1. 作用域影响‌:var的作用域为函数级,let/const为块级。‌‌
  2. 暂时性死区(TDZ)‌:let/const声明的变量在声明前不可访问。‌‌
  3. 开发建议‌:
    • 优先使用let/const以避免变量提升的副作用。‌‌
    • 将变量声明置于作用域起始处,提升代码可读性。‌‌

6. 数据类型

类型语义示例
string字符串“Hello”  "示例"
number数字42, 3.14
boolean布尔值true/false
null空值nul1
undefined未定义undefined
symbol符号(唯一)Symbol('描述符号')
bigint大整数123n/BigInt(123)
object对象{ }

JavaScript 中有八种基本的数据类型

七种原始数据类型(基本数据类型):

  • number 用于任何类型的数字:整数或浮点数,在 ±(2(53次方)-1) 范围内的整数。
  • bigint 用于任意长度的整数。
  • string 用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。
  • boolean 用于 true 和 flase。
  • null 用于未知的值 —— 只有一个 null 值的独立类型。
  • undefined 用于未定义的值 —— 只有一个 undefined 值的独立类型。
  • symbol 用于唯一的标识符。

以及一种非原始数据类型(复杂数据类型):

  • object 用于更复杂的数据结构。
  6.1 null和 undefined的区别及使用场景

  null

特殊的 null 值它构成了一个独立的类型,只包含 null 值:

let age = null;

相比较于其他编程语言,JavaScript 中的 null 不是一个“对不存在的 object 的引用”或者 “null 指针”。

JavaScript 中的 null 仅仅是一个代表“无”、“空”或“值未知”的特殊值。

上面的代码表示 age 是未知的。

    undefined

特殊值 undefined 和 null 一样自成类型。

undefined 的含义是  未被赋值的

如果一个变量已被声明,但未被赋值,那么它的值就是 undefined

let age;
alert(age); // 弹出 "undefined"

从技术上讲,可以显式地将 undefined 赋值给变量:

let age = 100;

// 将值修改为 undefined
age = undefined;

alert(age); // "undefined"

但是不建议这样做。通常,使用 null 将一个“空”或者“未知”的值写入变量中,而 undefined 则保留作为未进行初始化的事物的默认初始值。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值