JavaScript是动态类型、单线程、基于原型的脚本语言,支持函数式与面向对象编程,依托事件循环实现非阻塞异步,广泛应用于全栈及跨端开发。

JavaScript 是一种轻量级、解释型、支持面向对象和函数式编程范式的动态脚本语言,最初为网页交互而设计,如今已广泛用于前端、后端(Node.js)、移动端(React Native)、桌面端(Electron)甚至物联网领域。
基于原型的面向对象
JavaScript 没有传统意义上的“类”(ES6 的 class 只是语法糖),对象直接通过原型(prototype)链继承行为。每个对象都有一个内部属性 [[Prototype]],指向它的原型对象,查找属性或方法时会沿原型链向上委托。
- 用 Object.create() 显式创建基于某原型的新对象
- 构造函数的 .prototype 属性决定其实例的原型
- ES6 引入 class 语法,但底层仍是原型机制,不是真正的类继承
头等函数与闭包
函数在 JavaScript 中是一等公民:可以赋值给变量、作为参数传递、从函数中返回,还能捕获并记住其词法作用域——这就是闭包。闭包让函数即使在其定义环境销毁后,仍能访问外部变量。
- 回调函数、事件处理器、模块封装都依赖闭包实现数据私有性
- 避免在循环中直接使用 var 声明的循环变量传给异步函数(常见陷阱)
- 立即执行函数表达式(IIFE)曾是模拟块级作用域的主要方式,现多被 let/const 替代
动态类型与运行时灵活性
JavaScript 是动态类型语言:变量无需声明类型,类型在运行时确定,且可随时改变。它支持鸭子类型(“如果它走起来像鸭子、叫起来像鸭子,那它就是鸭子”),关注行为而非声明。
立即学习“Java免费学习笔记(深入)”;
- 用 typeof、instanceof、Array.isArray() 或 Object.prototype.toString.call() 辨别值的真实类型
- 隐式类型转换(如 ==)易引发意外结果,推荐使用严格相等 ===
- TypeScript 等工具在开发期补充静态类型检查,不改变 JS 运行时本质
单线程 + 事件驱动 + 非阻塞 I/O
JavaScript 在宿主环境(如浏览器或 Node.js)中以单线程运行,靠事件循环(Event Loop)协调同步任务、微任务(Promise.then)、宏任务(setTimeout)的执行顺序,实现高并发的非阻塞体验。
- 所有耗时操作(网络请求、文件读写、定时器)都以异步方式交由宿主处理,JS 主线程不等待
- Promise 和 async/await 是处理异步逻辑的标准方式,本质仍是基于事件循环的语法糖
- 长时间同步计算会阻塞渲染和响应,需用 Web Worker 或分片(time slicing)规避
基本上就这些。它不追求语法严谨或运行高效,而是强调适应性、表达力和与宿主环境的深度集成——这也是它二十多年来持续演进、历久弥新的核心原因。











