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
相关推荐
言乐62 小时前
Python游戏水平测试辅助系统
开发语言·python·游戏·django·pygame
我命由我123458 小时前
CesiumJS 笔记 - 获取容器中心点、Cartesian3 clone 方法、修改 Cartesian3 对象的高度
前端·javascript·css·前端框架·html·html5·js
抱抱宝9 小时前
Agent-study项目教程(03):手写 Mini-ReAct Agent(不依赖框架)
javascript·人工智能·gpt·react.js·prompt·agent
用户938515635079 小时前
Next.js 笔记系统(二):Redis 数据服务与侧边栏组件拆分实战
javascript·全栈
WWJA王文举9 小时前
I²C通信完整流程详解:START、地址、ACK、数据、Repeated START和STOP一次讲透
c语言·开发语言
zhanghaha131410 小时前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
qq_4480111611 小时前
C语言中的动态内存分配
c语言·开发语言·php
汉字萌萌哒12 小时前
2024CSP-J入门级C++真题详解
开发语言·c++
arbboter12 小时前
【网络工具】NetProxy网络代理用户手册
开发语言·网络·c#·网络代理·网络异常·代理工具
Heo13 小时前
大厂前端调试不能只会debugger
前端·javascript·面试