JavaScript 基础知识总结
·
一、前言
JavaScript 是解释型、动态类型、单线程事件循环的脚本语言,横跨浏览器、服务器、移动端,每年迭代新标准,拥有全球最大开源生态(npm)。
npm = Node Package Manager(Node 包管理器)
npm 是 Node 自带的包管理器,负责下载、版本、脚本、发布,让 JS 开发者“装包就像装 App”,是全球最大的开源代码仓库入口。
npm核心功能:
| 功能 | 命令示例 | 说明 |
|---|---|---|
| 下载包 | npm install lodash |
把包拉进 node_modules |
| 版本管理 | npm install vue@3.2.45 |
精确到补丁号 |
| 依赖解析 | package-lock.json |
锁定整个依赖树,保证“一模一样” |
| 脚本运行 | npm run dev |
执行 package.json 里的自定义脚本 |
| 发布包 | npm publish |
把代码推到官方仓库,全球可装 |
二、JavaScript 基本数据类型
JS 八种类型:七种原始(number bigint string boolean undefined null symbol)+ 一种引用(object),用 typeof 可快速判断,注意 null 返回 “object” 是历史遗留。
① 原始类型(Primitive)值不可变
| 类型 | 例子 | 说明 |
|---|---|---|
number |
3.14, NaN, Infinity |
所有数字(整数、浮点、特殊值) |
bigint |
123n |
任意大整数,尾部带 n |
string |
"hi", 'hi', `hi` |
字符串,可用单、双、反引号 |
boolean |
true, false |
布尔值 |
undefined |
undefined |
未赋值时的默认值 |
null |
null |
空对象引用(注意 typeof null === 'object') |
symbol |
Symbol('desc') |
唯一标识符,ES6 新增 |
bigint |
123n |
超大整数,ES2020 引入 |
② 引用类型(Object)值可变
| 类型 | 例子 | 说明 |
|---|---|---|
object |
{}, [], new Date() |
普通对象、数组、函数、日期、正则、Map、Set 等都归为此类 |
举例子:
typeof 123 // "number"
typeof "hi" // "string"
typeof true // "boolean"
typeof undefined // "undefined"
typeof null // "object" (历史 bug)
typeof Symbol() // "symbol"
typeof 123n // "bigint"
typeof {} // "object"
typeof [] // "object" (数组是对象)
typeof function(){} // "function" (特殊子类型)
三、JavaScript 声明变量的关键字只有 3 个
| 关键字 | 作用域 | 变量提升 | 重复声明 | 是否可重新赋值 | 是否只读绑定 |
|---|---|---|---|---|---|
var |
函数级 | ✅ | ✅ | ✅ | ❌ |
let |
块级 | ❌ | ❌ | ✅ | ❌ |
const |
块级 | ❌ | ❌ | ❌(引用不可重新指向) | ✅(只读引用) |
注意:const 保证“绑定”只读,若值是对象/数组,内部字段仍可改。
一句话总结:现代代码默认用 const,确实需要重新赋值时再换 let,
var 已废弃,别再写。
① var - 老派写法(函数作用域、可重复、可改)
function demoVar() {
var x = 1;
var x = 2; // ✅ 重复声明合法
if (true) {
var x = 3; // ✅ 函数作用域,整个函数内都是 3
}
console.log(x); // 3
}
demoVar();
② let - 现代变量(块级作用域、不可重复、可改)
function demoLet() {
let x = 1;
// let x = 2; // ❌ SyntaxError: 不能重复声明
if (true) {
let x = 2; // ✅ 块级作用域,仅 if 内有效
console.log(x); // 2
}
console.log(x); // 1
}
demoLet();
③ const - 常量(块级作用域、不可重复、不可重新赋值)
function demoConst() {
const x = 1;
// x = 2; // ❌ TypeError: 不能重新赋值
// const x = 2; // ❌ SyntaxError: 不能重复声明
const obj = { name: 'Tom' };
obj.name = 'Jerry'; // ✅ 对象内容可改,引用不能换
console.log(obj.name); // Jerry
}
demoConst();
更多推荐


所有评论(0)