什么是JavaScript

31 阅读6分钟

JavaScript是一种轻量级、解释型或即时编译型(JIT)的编程语言。它最初被设计用于增强网页的交互性,现在已经成为Web开发的核心技术之一,

轻量级指的是语言设计简单、核心库规模小、运行所占用的资源(内存和CPU)低。

解释型指的是代码运行时由解释器逐行翻译并执行,不需要预先编译为机器码。它的工作原理:解释器读取一行代码 → 语法分析 → 转换为中间指令 → 立即执行。

**即时编译型(JIT)**指的是在运行时动态将热点代码(频繁执行的代码)编译为机器码。它的工作原理:代码首次执行时由解释器处理 → 识别热点代码 → JIT编译器生成优化后的机器码 → 后续直接执行机器码

JavaScript与HTML、CSS共同协作,统称为前端三剑客。在Web开发中分别扮演不同的角色,承担不同的职责:

  • HTML(结构):负责定义网页的内容和骨架,如标题、段落、图片等。
  • CSS(表现):负责控制网页的布局、颜色、字体等视觉效果,只要职责是美化页面。
  • JavaScript(行为):负责实现网页的交互逻辑、动态效果、内容更新及与后端服务器的通信。

1. JavaScript历史简述

JavaScript是由Brendan Eich​​ 在1995年于Netscape公司发明。为了蹭Java的热度,命名为JavaScript,实际上与Java没有任何关系。

它的语言标准由ECMA国际组织管理,称为ECMAScript (简称ES),2009年发布的ES5奠定了基础,2015年发布的ES6(ES2015) 引入类、模块、箭头函数等现代语言特性。此后ECMAScript保持年度更新,不断添加新特性。

2. JavaScript的核心特点

  • 动态弱类型:JavaScript是一种动态类型语言,变量的类型在运行时确定,并且能够在开发的过程中改变。它也是弱类型语言,在需要时自动进行类型转换,增加灵活性的同时也带来一些难以发现的错误。
  • 基于原型:JavaScript使用原型链(通过一种链式结构,让对象能够访问其他对象的属性和方法)机制实现对象的继承。

  • 函数是一等公民:函数在JavaScript中被视为对象,可以像任何变量一样被传递、赋值或作为参数传递给其他函数。
  • 事件驱动与异步编译:JavaScript采用事件驱动机制,能够响应用户的操作(如点击、输入)。通过回调函数、Promise以及async/await等机制,JavaScript能够执行非阻塞的异步操作,非常适合处理网络请求等耗时的任务。
  • 跨平台性:JavaScript几乎能在所有浏览器中运行。通过Node.js还可以在服务器端运行,真正实现了跨平台开发。

3. JavaScript的实现

完整的Javascript实现包括三部分

  • 核心(ECMAScript):ECMA-262定义并提供核心功能。

  • 文档对象模型(DOM):提供与网页内容交互的方法和接口。

  • 浏览器对象模型(BOM):提供与浏览器交互的方法和接口。

3.1 ECMAScript

ECMA-262作为一个基准来定义,在它之上构建更稳健的脚本语言。Web浏览器只是ECMAScript实现的一种宿主环境。宿主环境提供ECMAScript与环境自身交互必需的扩展(如DOM)。

ECMAScript描述了这门语言下面这些内容:

  • 语法

  • 类型

  • 语句

  • 关键字

  • 保留字

  • 操作符

  • 全局对象

ECMAScript只是对实现这个规范描述的所有方面的一门语言的称呼。JavaScript实现了ECMAScript,而Adobe ActionScript同样也实现了ECMAScript。 

3.2 DOM (文档对象模型)

DOM是一个应用编程接口,用于在HTML中使用扩展的XML。DOM将整个页面抽象成一组节点。它提供对文档结构化的描述,并将HTML页面与脚本、程序语言联系起来。

DOM用一个逻辑树表示一个文档,每个分支的重点都是一个节点,每个节点包含着对象。

DOM的方法可以用特定的方法操作这个树,你可以改变文档的结构、样式和内容。

节点可以关联事件处理器,被触发时,事件处理器会被执行。

使用DOM API,可以轻松地删除、添加、替换、修改节点。 

1998年10月,DOM Level 1成为W3C的推荐标准。这个规范由两个模块组成:DOM Core和DOM HTML。

3.3 BOM(浏览器对象模型)

BOM是唯一一个没有相关标准的 JavaScript 实现,HTML5  以正式规范的形式涵盖了尽可能多的 BOM 特性。

BOM主要针对浏览器窗口和子窗口(frame),通常也会把特定于浏览器的扩展都归在BOM,比如:

  • 弹出新浏览器窗口的能力;

  • 移动、缩放和关闭浏览器窗口的能力;

  • navigator对象,提供关于浏览器的信息;

  • location对象,提供浏览器加载页面的信息;

  • screen对象,提供关于用户屏幕分辨率的信息;

  • performance对象,提供浏览器内存占用、导航行为和时间统计的信息;

  • 对cookie的支持;

  • 其他自定义对象,比如XMLHttpRequest和IE的ActiveXObject。 

4. 主要用途和应用场景

  1. 网页交互与动态内容:这是JavaScript最基础的用途。它可以 操作DOM、响应用户事件,进行表单验证以及创建动画效果等。

  2. Ajax异步网络请求:通过AJAX或Fefch API技术,在不重新加载整个页面的情况下,与服务器交互。

  3. 前端框架与单页面应用(SPA):Vue、React等前端框架可以开发复杂的、类似桌面应用程序的单页面应用。

  4. Node.js服务器端开发Node.js​​ 是一个开源、跨平台的运行环境,让JavaScript能够构建完整的Web服务器和后端应用程序。

  5. 移动应用与桌面应用开发:React Native、Ionic或Electron框架,可以实现跨平台的移动应用程序和桌面应用程序。

  6. 游戏开发:结合HTML5的 ​​Canvas​​ 和 ​​WebGL​​ 技术,JavaScript可以在浏览器中开发2D和3D游戏。

  7. 物联网(IoT):JavaScript应用于物联网设备的编程。