Skip to content

JavaScript 语言基础与类型系统

JavaScript 是一门动态类型、弱类型的语言:变量不绑定类型、值在运算时会被悄悄转换。这套「灵活」既是它上手快的原因,也是无数 Bug 的温床——"37" - 730"37" + 7"377"0.1 + 0.2 !== 0.3typeof null"object"[] == ![] 居然为 true。本叶把「变量怎么声明、有哪些类型、值怎样转换与比较、运算符全谱、控制流、以及 strict mode 与那些历史怪癖」一次讲透,让你看懂引擎在背后到底做了什么。

概述

  • 它管什么:用 var / let / const 声明变量(作用域、提升、TDZ);7 种原始类型 + 对象;类型之间的隐式 / 显式转换;== / === / Object.is 三套相等语义;算术 / 逻辑 / 位 / 三元 / 可选链 / 空值合并等运算符;if / switch / 循环等控制流;strict mode 收紧的那些松散行为。
  • 为什么值得认真学:这些是所有 JavaScript 代码的地基——框架、库、Node、浏览器脚本无一例外都建立在这套规则上。不懂类型转换与相等语义,调试就只能靠猜;理解了,那些「玄学 Bug」会瞬间变得有迹可循。
  • 现代化关注点let / const 取代 var(ES2015)、指数运算符 **(ES2016)、可选链 ?. 与空值合并 ??(ES2020)、逻辑赋值 &&= / ||= / ??=(ES2021)、BigInt(ES2020)、数字分隔符 _(ES2021);以及 ES module / class 默认 strict mode 带来的「现代代码天然更安全」。

本叶地图

  • 入门 —— 一段「现代且类型安全」的代码骨架,逐块讲清声明、类型、转换、相等的核心取舍
  • 变量声明:var / let / const —— 三种声明、作用域、提升机制与暂时性死区(TDZ)
  • 原始类型与包装对象 —— 7 种原始类型逐一拆解,以及 String / Number / Boolean 包装对象的自动装箱
  • 类型转换与相等比较 —— 显隐式转换、== vs ===Object.isNaN 坑、truthy / falsy 全表
  • 运算符全谱 —— 算术 / 逻辑 / 位 / 三元 / ?. / ?? / **,以及短路求值与运算符优先级
  • 控制流与循环 —— if / switch、三种循环、for...of vs for...inbreak / continue 与标签
  • strict mode 与历史怪癖 —— 严格模式收紧了什么、typeof null、自动分号插入(ASI)等历史包袱
  • 参考 —— 速查表 + 标准 / Baseline / 调试工具链接

文档地址

幻灯片地址

JavaScript 语言基础与类型系统

测试题

JavaScript 语言基础与类型系统 测试题