惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
I
InfoQ
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 【当耐特】
T
The Blog of Author Tim Ferriss
N
Netflix TechBlog - Medium
GbyAI
GbyAI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
L
LINUX DO - 热门话题
Security Latest
Security Latest
月光博客
月光博客
U
Unit 42
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threat Research - Cisco Blogs
The GitHub Blog
The GitHub Blog
Simon Willison's Weblog
Simon Willison's Weblog
Help Net Security
Help Net Security
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
罗磊的独立博客
Attack and Defense Labs
Attack and Defense Labs
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
S
Securelist
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
PCI Perspectives
PCI Perspectives
S
Security Affairs
Schneier on Security
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
L
LangChain Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
H
Hacker News: Front Page
C
Cyber Attacks, Cyber Crime and Cyber Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Privacy & Cybersecurity Law Blog
W
WeLiveSecurity
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
K
Kaspersky official blog
Google Online Security Blog
Google Online Security Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
V
Vulnerabilities – Threatpost
Recorded Future
Recorded Future

博客园 - lzhdim

JavaScript 中的原型与继承 1分钟查清局域网所有IP 20260714 - 个人小作品更新 WorkBuddy 完整教程手册 专为AI而生的企业级QLC SSD!长江存储PE501 61.44TB评测:超过1PB的写入测试 32GB显存才是第一生产力!英特尔锐炫 Pro B70评测:中小企业AI降本神器 JavaScript中的this关键字 C#开发的PopoSaver泡泡屏保应用 - 开源研究系列文章 - 个人小作品 6天不间断测试告诉你到底有多省电!米家空调巨省电大1.5匹评测:制冷峰值功率不超过500W 三倍双摄加持 + D-Log 2 曲线!大疆DJI OSMO Pocket 4P全面评测:补齐短板,化身口袋电影机 晶栈4.0闪存立威!长江存储致态TiPro9000 2TB SSD评测:缓外写入超4GB/s独一档 C# 多线程同步机制详解:原理、使用与性能对比 JavaScript作用域与闭包讲解 最受欢迎的 10 大免费 AI 工具 六种AI生意,从月入一万到月入十万 5个国产大模型实测对比2026:DeepSeek、Kimi、豆包、通义、智谱哪个好用 豆包、元宝、千问、Kimi、DeepSeek,这么多AI软件,到底该用哪个? 微软免费开源了一个 Linux 操作系统,没错!是微软出品 一次看懂5种咖啡冲煮方式:意式、手冲、法压、冷萃、摩卡壶到底有什么区别 120个 实用CSS 技巧汇总合集 JavaScript运算符与表达式详解 C#开发的ScreenSaver屏保应用 - 开源研究系列文章 - 个人小作品 WinForm 中跨线程操作 UI 的解决方案 JavaScript变量与数据类型详解 苹果良心!iOS 27适配设备公布:30款机型 7年前的iPhone 11还能升级 C++图形用户界面开发入门 10个不该免费的GitHub神级项目 一张图看懂常见咖啡 C盘空间多出来4GB:谷歌服软 Chrome本地AI大模型可禁用、删除了 96GB显存运行230B大模型!七彩虹灵创K16笔记本评测:160W性能释放 AMD锐龙AI Max+ 395加持全能移动AI工作站 AI PC最强存储搭档!雷克沙NM1090 PRO 8TB固态评测:14400MB/s满速不缩水 C#已经不是当年的C#了——我用它写了个微秒级数据库引擎 EasyTool:轻量全能的 .NET 工具类库 SQL 入门 17:MySQL 数据类型:从字符串到 JSON 的全面解析 SQL 入门 16:SQL 事务隔离级别与死锁解析(易懂) 原相3955XM+TL3228主控!小米电竞鼠标2全面评测:原生双8K究竟有多强 PCIe 4.0火力全开:闪迪奥丁马仕GX 7100 NVMe SSD上手 超乎预料的千元级电竞主板!七彩虹iGame B850M Ultra-OC V14主板评测 SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题 名人 - 我的闪存 C#性能优化技巧 SQL 入门 14:SQL 触发器与事件:自动化数据处理 38个实用的JavaScript 技巧 一款基于 .Net WinForm 开发的节点编辑器,纯 GDI 实现,体积仅 100+Kb Masuit.Tools:这个 C# 工具库 SQL 入门 13:SQL 存储过程与函数:封装逻辑与参数处理 49个 JavaScript 代码快捷技巧,让你在 2026 年成为代码高手 20260503 - 个人小作品更新 SQL 入门 12:SQL 视图:创建、修改与可更新视图 C#如何实现Windows系统桌面截图功能... 6999元AMD新旗舰首测!锐龙9 9950X3D2性能解禁:这颗U根本不是给游戏玩家造的 SQL 入门 11:日期时间格式化、IF、CASE的使用 基于C#的校时类库的实现及使用 - 开源项目研究文章
JavaScript语言全面概述:从历史到现代实践
lzhdim · 2026-06-08 · via 博客园 - lzhdim

一、JavaScript的历史与发展JavaScript诞生于1995年,由Netscape公司的Brendan Eich在短短10天内设计完成。最初命名为Mocha,后改为LiveScript,最终为了借助Java的流行度而定名为JavaScript(尽管两者并无直接关系)。重要历史节点:

  • 1996年:微软推出JScript,与Netscape竞争
  • 1997年:ECMAScript标准第一版发布(ECMA-262)
  • 2005年:AJAX技术兴起,JavaScript重要性提升
  • 2009年:ES5发布,带来严格模式、JSON支持等
  • 2015年:ES6/ES2015发布,JavaScript现代化
  • 2016至今:每年发布新标准,持续演进

Javascript与ECMAScript的关系

JavaScript是ECMAScript的实现之一,完整的JavaScript包括:

  • ECMAScript核心:语言基础(语法、类型、语句等)
  • DOM:文档对象模型(浏览器文档操作)
  • BOM:浏览器对象模型(与浏览器窗口交互)


二、ECMAScript标准详解2.1 版本演进

版本

发布时间

主要特性

ES1

1997

初始版本

ES3

1999

正则表达式、try/catch

ES5

2009

严格模式、JSON、数组方法

ES6

2015

let/const、类、模块、Promise等

ES2016

2016

指数运算符、Array.prototype.includes

ES2017

2017

async/await、共享内存

ES2020

2020

可选链、空值合并、BigInt

2.2 ES6+核心特性1)块级作用域与let/const

// ES5只有函数作用域和全局作用域var x = 10;if (true) {  var x = 20; // 同一个变量  console.log(x); // 20}console.log(x); // 20
// ES6引入块级作用域let y = 10;if (true) {  let y = 20; // 不同的变量  console.log(y); // 20}console.log(y); // 10
const z = 30;// z = 40; // 错误:不能重新赋值

2) 箭头函数

// ES5函数表达式var multiply = function(a, b) {  return a * b;};
// ES6箭头函数const multiply = (a, b) => a * b;
// this绑定差异function Counter() {  this.count = 0;
  // ES5方式需要额外绑定this  var self = this;  setInterval(function() {    self.count++;  }, 1000);
  // ES6箭头函数自动绑定词法this  setInterval(() => {    this.count++;  }, 1000);}

3)类语法

// ES5原型继承function Person(name) {  this.name = name;}Person.prototype.sayHello = function() {  console.log("Hello, " + this.name);};
// ES6类语法class Person {  constructor(name) {    this.name = name;  }
  sayHello() {    console.log(`Hello, ${this.name}`);  }
  // 静态方法  static createAnonymous() {    return new Person("Anonymous");  }}
class Student extends Person {  constructor(name, grade) {    super(name);    this.grade = grade;  }}

4)模块系统

// math.jsexport function add(a, b) {  return a + b;}
export const PI = 3.14159;
// app.jsimport { add, PI } from './math.js';console.log(add(2, PI)); // 5.14159
// 默认导出// logger.jsexport default function(message) {  console.log(message);}
// app.jsimport log from './logger.js';log("Hello Modules!");

5)Promise与异步编程

// 回调地狱示例getData(function(a) {  getMoreData(a, function(b) {    getMoreData(b, function(c) {      console.log(c);    });  });});
// Promise解决方案getData()  .then(a => getMoreData(a))  .then(b => getMoreData(b))  .then(c => console.log(c))  .catch(error => console.error(error));
// async/await语法糖async function fetchData() {  try {    const a = await getData();    const b = await getMoreData(a);    const c = await getMoreData(b);    console.log(c);  } catch (error) {    console.error(error);  }}

2.3 最新的ECMAScript特性1)可选链操作符(?.)

const user = {  profile: {    name: "John",    address: {      city: "New York"    }  }};
// 传统方式const city = user && user.profile && user.profile.address && user.profile.address.city;
// 可选链const city = user?.profile?.address?.city; // "New York"const zipCode = user?.profile?.address?.zipCode; // undefined而不是错误

2) 空值合并运算符(??)

// 传统方式const configValue = (config.setting !== null && config.setting !== undefined)   ? config.setting   : 'default';
// 空值合并const configValue = config.setting ?? 'default';
// 与||的区别0 || 'default'  // 'default' (0是falsy)0 ?? 'default'  // 0 (只有null/undefined会触发默认值)

3)动态导入

// 静态导入// import { largeModule } from './largeModule.js'; // 初始加载
// 动态导入button.addEventListener('click', async () => {  const module = await import('./largeModule.js');  module.largeFunction();});

三、JavaScript运行环境3.1 浏览器环境

浏览器提供完整的JavaScript执行环境,包括:

  • JavaScript引擎:解析和执行代码
  • DOM API:文档操作
  • BOM API:浏览器窗口操作
  • 事件循环:处理异步操作

// 浏览器环境示例document.getElementById('myButton').addEventListener('click', () => {  fetch('https://api.example.com/data')    .then(response => response.json())    .then(data => {      localStorage.setItem('userData', JSON.stringify(data));      history.pushState({}, '', '/new-page');    });});

3.2 Node.js环境

Node.js基于Chrome V8引擎,提供了服务器端JavaScript运行环境:

  • CommonJS模块系统
  • 文件系统访问
  • 网络操作
  • 原生扩展支持

// Node.js示例const http = require('http');const fs = require('fs').promises;
const server = http.createServer(async (req, res) => {  try {    const data = await fs.readFile('./index.html');    res.writeHead(200, { 'Content-Type': 'text/html' });    res.end(data);  } catch (err) {    res.writeHead(500);    res.end(err.message);  }});
server.listen(3000, () => {  console.log('Server running on http://localhost:3000');});

3.3 其它运行环境

  • Deno:安全的TypeScript运行时
  • Bun:高性能JavaScript运行时
  • Electron:桌面应用开发
  • React Native:移动应用开发