一、前言

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();
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐