JavaScript变量

JavaScript 变量我们可以把它理解为:

变量 = 一个带名字的盒子,用来存放数据。


1. 什么是变量

例如:

javascript 复制代码
let name = "Tom";

相当于:

复制代码
name ──► "Tom"

这里:

  • name 是变量名
  • "Tom" 是变量值

以后需要这个值时:

javascript 复制代码
console.log(name);

输出:

javascript 复制代码
Tom

2. 声明变量

JS 有三种声明变量的方法:

javascript 复制代码
var
let
const

let(最常用)

javascript 复制代码
let age = 18;

修改:

javascript 复制代码
let age = 18;

age = 20;

console.log(age);

结果:

javascript 复制代码
20

const(常量)

声明后不能重新赋值:

javascript 复制代码
const PI = 3.14;

错误:

javascript 复制代码
const PI = 3.14;

PI = 3.14159;

会报错:

javascript 复制代码
TypeError

3. 变量命名规则

可以

javascript 复制代码
let age;
let userName;
let score1;
let _name;
let $price;

不可以

数字开头:

javascript 复制代码
let 123abc;

错误


包含空格:

javascript 复制代码
let user name;

错误


使用关键字:

javascript 复制代码
let let;
let const;
let if;

错误


4. 变量赋值

声明时赋值

javascript 复制代码
let age = 18;

先声明后赋值

javascript 复制代码
let age;

age = 18;

修改变量

javascript 复制代码
let age = 18;

age = 20;

结果:

javascript 复制代码
20

5. 变量的数据类型

JS 是动态类型语言。

意思:

javascript 复制代码
let x = 10;

后面可以改成:

javascript 复制代码
x = "hello";

完全合法。


Number

数字:

javascript 复制代码
let age = 18;
let price = 99.9;

String

字符串:

javascript 复制代码
let name = "Tom";

或者:

javascript 复制代码
let name = 'Tom';

Boolean

布尔值:

javascript 复制代码
let isLogin = true;
let isAdmin = false;

Undefined

声明但没赋值:

javascript 复制代码
let age;

console.log(age);

结果:

javascript 复制代码
undefined

Null

表示空值:

javascript 复制代码
let user = null;

Object(对象)

最重要的数据类型之一。

javascript 复制代码
let person = {
    name: "Tom",
    age: 18
};
typeof person;

结果:

javascript 复制代码
"object"

数组其实也是对象:

javascript 复制代码
let arr = [1, 2, 3];

typeof arr;

结果:

javascript 复制代码
"object"

Symbol(符号)

用于创建唯一值:

javascript 复制代码
let id = Symbol();
typeof id;

结果:

javascript 复制代码
"symbol"

例如:

javascript 复制代码
let s1 = Symbol();
let s2 = Symbol();
console.log(s1 === s2);

结果:

javascript 复制代码
false

即使长得一样,也永远不相等。

BigInt(大整数)

用于超大整数计算。

普通 Number 最大安全整数:

javascript 复制代码
Number.MAX_SAFE_INTEGER

约等于:

9007199254740991

超过后可能不准确。

javascript 复制代码
BigInt:

let n = 123456789012345678901234567890n;

注意后面的:

javascript 复制代码
n

表示 BigInt。

javascript 复制代码
typeof n;

结果:

"bigint"

6. typeof 查看类型

javascript 复制代码
let age = 18;

console.log(typeof age);

结果:

javascript 复制代码
number

例子:

javascript 复制代码
console.log(typeof 123);
javascript 复制代码
number

javascript 复制代码
console.log(typeof "hello");
javascript 复制代码
string

javascript 复制代码
console.log(typeof true);
javascript 复制代码
boolean

javascript 复制代码
console.log(typeof undefined);
javascript 复制代码
undefined

7. 字符串拼接

传统写法:

javascript 复制代码
let name = "Tom";

console.log("你好 " + name);

结果:

javascript 复制代码
你好 Tom

推荐写法(模板字符串)

javascript 复制代码
let name = "Tom";

console.log(`你好 ${name}`);

结果:

javascript 复制代码
你好 Tom

多个变量:

javascript 复制代码
let name = "Tom";
let age = 18;

console.log(`我叫${name},今年${age}岁`);

结果:

javascript 复制代码
我叫Tom,今年18岁

8. 变量作用域

作用域:

变量在哪里能访问。


全局变量

javascript 复制代码
let name = "Tom";

function test() {
    console.log(name);
}

输出:

javascript 复制代码
Tom

整个程序都能访问。


局部变量

javascript 复制代码
function test() {
    let age = 18;
}

console.log(age);

报错:

javascript 复制代码
ReferenceError

因为:

javascript 复制代码
age

只在函数内部存在。


块级作用域

letconst 有块级作用域。

javascript 复制代码
{
    let age = 18;
}

console.log(age);

报错:

javascript 复制代码
ReferenceError

9. var、let、const 对比

特性 var let const
可修改
可重复声明
块级作用域
推荐程度

例子:

javascript 复制代码
var a = 1;
var a = 2;

合法。


javascript 复制代码
let a = 1;
let a = 2;

报错。


10. 解构赋值

数组:

javascript 复制代码
let arr = [10, 20];

let [a, b] = arr;

console.log(a);
console.log(b);

结果:

javascript 复制代码
10
20

对象:

javascript 复制代码
let user = {
    name: "Tom",
    age: 18
};

let { name, age } = user;

console.log(name);
console.log(age);

结果:

javascript 复制代码
Tom
18
相关推荐
天才熊猫君2 小时前
配置与数据分离:一种可视化搭建的属性编辑方案
前端·javascript
林希_Rachel_傻希希2 小时前
web性能之相关路径——AI总结
前端·javascript·面试
不好听6132 小时前
从零搭建一个 RAG 语义搜索系统 —— DEMO的初始阶段
javascript·面试·llm
何时梦醒2 小时前
上下文工程(Context Engineering):AI 应用开发的新范式 —— 从理论到实战全解析
javascript
竹林8182 小时前
用 wagmi v2 踩坑两天,我终于搞懂了多链钱包切换在 DeFi 前端中的正确姿势
前端·javascript
用户2136610035722 小时前
Vue项目搜索功能与面包屑导航
前端·javascript
阿黎梨梨2 小时前
揭秘大语言模型的底层逻辑:从文本分词到高维向量的计算之旅
javascript·人工智能
天平12 小时前
油猴脚本创建webworker踩坑记录
前端·javascript·typescript
山河木马18 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林81818 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript