- JavaScript 基础教程
- JavaScript - 首页
- JavaScript - 路线图
- JavaScript - 概述
- JavaScript - 特性
- JavaScript - 启用
- JavaScript - 位置
- JavaScript - 语法
- JavaScript - Hello World
- JavaScript - Console.log()
- JavaScript - 注释
- JavaScript - 变量
- JavaScript - let 语句
- JavaScript - 常量
- JavaScript - 数据类型
- JavaScript - 类型转换
- JavaScript - 严格模式
- JavaScript - 保留关键字
- JavaScript 运算符
- JavaScript - 运算符
- JavaScript - 算术运算符
- JavaScript - 比较运算符
- JavaScript - 逻辑运算符
- JavaScript - 按位运算符
- JavaScript - 赋值运算符
- JavaScript - 条件运算符
- JavaScript - typeof 运算符
- JavaScript - 空值合并运算符
- JavaScript - delete 运算符
- JavaScript - 逗号运算符
- JavaScript - 分组运算符
- JavaScript - yield 运算符
- JavaScript - 展开运算符
- JavaScript - 指数运算符
- JavaScript - 运算符优先级
- JavaScript 控制流
- JavaScript - If...Else
- JavaScript - While 循环
- JavaScript - For 循环
- JavaScript - For...in
- Javascript - For...of
- JavaScript - 循环控制
- JavaScript - Break 语句
- JavaScript - Continue 语句
- JavaScript - Switch Case
- JavaScript - 用户定义迭代器
- JavaScript 函数
- JavaScript - 函数
- JavaScript - 函数表达式
- JavaScript - 函数参数
- JavaScript - 默认参数
- JavaScript - Function() 构造函数
- JavaScript - 函数提升
- JavaScript - 自执行函数
- JavaScript - 箭头函数
- JavaScript - 函数调用
- JavaScript - Function call()
- JavaScript - Function apply()
- JavaScript - Function bind()
- JavaScript - 闭包
- JavaScript - 变量作用域
- JavaScript - 全局变量
- JavaScript - 智能函数参数
- JavaScript 对象
- JavaScript - Number
- JavaScript - Boolean
- JavaScript - Strings
- JavaScript - Arrays
- JavaScript - Date
- JavaScript - DataView
- JavaScript - Handler
- JavaScript - Math
- JavaScript - RegExp
- JavaScript - Symbol
- JavaScript - Sets
- JavaScript - WeakSet
- JavaScript - Maps
- JavaScript - WeakMap
- JavaScript - 可迭代对象
- JavaScript - Reflect
- JavaScript - TypedArray
- JavaScript - 模板字面量
- JavaScript - 带标签的模板
- 面向对象 JavaScript
- JavaScript - 对象
- JavaScript - 类
- JavaScript - 对象属性
- JavaScript - 对象方法
- JavaScript - 静态方法
- JavaScript - 显示对象
- JavaScript - 对象访问器
- JavaScript - 对象构造函数
- JavaScript - 原生原型
- JavaScript - ES5 对象方法
- JavaScript - 封装
- JavaScript - 继承
- JavaScript - 抽象
- JavaScript - 多态
- JavaScript - 解构赋值
- JavaScript - 对象解构
- JavaScript - 数组解构
- JavaScript - 嵌套解构
- JavaScript - 可选链
- JavaScript - 全局对象
- JavaScript - Mixins
- JavaScript - 代理
- JavaScript 版本
- JavaScript - 历史
- JavaScript - 版本
- JavaScript - ES5
- JavaScript - ES6
- ECMAScript 2016
- ECMAScript 2017
- ECMAScript 2018
- ECMAScript 2019
- ECMAScript 2020
- ECMAScript 2021
- ECMAScript 2022
- JavaScript 异步
- JavaScript - 异步
- JavaScript - 回调函数
- JavaScript - Promise
- JavaScript - Async/Await
- JavaScript - 微任务
- JavaScript - Promise 化
- JavaScript - Promise 链式调用
- JavaScript - 定时事件
- JavaScript - setTimeout()
- JavaScript - setInterval()
- JavaScript Cookie
- JavaScript - Cookie
- JavaScript - Cookie 属性
- JavaScript - 删除 Cookie
- JavaScript 浏览器 BOM
- JavaScript - 浏览器对象模型
- JavaScript - Window 对象
- JavaScript - Document 对象
- JavaScript - Screen 对象
- JavaScript - History 对象
- JavaScript - Navigator 对象
- JavaScript - Location 对象
- JavaScript - Console 对象
- JavaScript Web API
- JavaScript - Web API
- JavaScript - History API
- JavaScript - Storage API
- JavaScript - Forms API
- JavaScript - Worker API
- JavaScript - Fetch API
- JavaScript - Geolocation API
- JavaScript 事件
- JavaScript - 事件
- JavaScript - DOM 事件
- JavaScript - addEventListener()
- JavaScript - 鼠标事件
- JavaScript - 键盘事件
- JavaScript - 表单事件
- JavaScript - Window/Document 事件
- JavaScript - 事件委托
- JavaScript - 事件冒泡
- JavaScript - 事件捕获
- JavaScript - 自定义事件
- JavaScript 错误处理
- JavaScript - 错误处理
- JavaScript - try...catch
- JavaScript - 调试
- JavaScript - 自定义错误
- JavaScript - 扩展错误
- JavaScript 重要关键字
- JavaScript - this 关键字
- JavaScript - void 关键字
- JavaScript - new 关键字
- JavaScript - var 关键字
- JavaScript HTML DOM
- JavaScript - HTML DOM
- JavaScript - DOM 方法和属性
- JavaScript - DOM Document
- JavaScript - DOM 元素
- JavaScript - DOM 属性 (Attr)
- JavaScript - DOM 表单
- JavaScript - 更改 HTML
- JavaScript - 更改 CSS
- JavaScript - DOM 动画
- JavaScript - DOM 导航
- JavaScript - DOM 集合
- JavaScript - DOM NodeList
- JavaScript - DOM DOMTokenList
- JavaScript 其他
- JavaScript - Ajax
- JavaScript - 异步迭代
- JavaScript - Atomics 对象
- JavaScript - Rest 参数
- JavaScript - 页面重定向
- JavaScript - 对话框
- JavaScript - 页面打印
- JavaScript - 验证
- JavaScript - 动画
- JavaScript - 多媒体
- JavaScript - 图像映射
- JavaScript - 浏览器
- JavaScript - JSON
- JavaScript - 多行字符串
- JavaScript - 日期格式
- JavaScript - 获取日期方法
- JavaScript - 设置日期方法
- JavaScript - 模块
- JavaScript - 动态导入
- JavaScript - BigInt
- JavaScript - Blob
- JavaScript - Unicode
- JavaScript - 浅拷贝
- JavaScript - 调用栈
- JavaScript - 引用类型
- JavaScript - IndexedDB
- JavaScript - 点击劫持攻击
- JavaScript - 柯里化
- JavaScript - 图形
- JavaScript - Canvas
- JavaScript - 防抖
- JavaScript - 性能
- JavaScript - 样式指南
JavaScript - 概述
什么是 JavaScript?
JavaScript 是一种动态的计算机编程语言。它轻量级,最常用于网页的一部分,其实现允许客户端脚本与用户交互并创建动态页面。它是一种具有面向对象功能的解释型编程语言。
JavaScript 是一种单线程编程语言,可用于客户端或服务器端开发。它是一种动态类型编程语言,这意味着我们在编写 JavaScript 代码时不必关心变量的数据类型。此外,它还包含控制语句、运算符和对象,如 Array、Math、Data 等。
JavaScript 最初被称为LiveScript,但 Netscape 将其名称更改为 JavaScript,可能是因为 Java 产生的兴奋。JavaScript 于 1995 年在 Netscape 2.0 中首次亮相,名称为LiveScript。该语言的通用核心已嵌入 Netscape 和其他 Web 浏览器中。
该ECMA-262 规范定义了核心 JavaScript 语言的标准版本。
JavaScript 是一种轻量级、解释型的编程语言。
旨在创建以网络为中心的应用程序。
与 Java 互补并集成。
与 HTML 互补并集成。
开放且跨平台
JavaScript 的历史
JavaScript 由 Brendan Eich 开发,他是 Netscape Communications Corporation 的计算机科学家和程序员。JavaScript 的最初名称是“Mocha”。之后,它更名为“LiveScript”,然后是“JavaScript”。
在 1996 年到 1997 年期间,欧洲计算机制造商协会 (ECMA) 对 JavaScript 进行了标准化。之后,JavaScript 进行了 3 次修订。
在ES5 (2009) 中,引入了 Node.js 以将 JavaScript 用作服务器端语言。ES6 (2015) 是 JavaScript 的重大修订,将高级功能引入 JavaScript。
目前,JavaScript 已达到 ES14 版本。ES14 (ECMAScript 2023) 是第 14 个版本,于 2023 年 6 月发布。
客户端 JavaScript
客户端 JavaScript 是该语言最常见的形式。脚本应包含在 HTML 文档中或由 HTML 文档引用,以便浏览器解释代码。
这意味着网页不必是静态 HTML,而是可以包含与用户交互、控制浏览器以及动态创建 HTML 内容的程序。
JavaScript 的客户端机制提供了许多优于传统 CGI 服务器端脚本的优势。例如,您可以使用 JavaScript 检查用户是否在表单字段中输入了有效的电子邮件地址。
当用户提交表单时,将执行 JavaScript 代码,并且只有在所有条目都有效时,才会将其提交到 Web 服务器。
JavaScript 可用于捕获用户发起的事件,例如按钮点击、链接导航以及用户显式或隐式发起的其他操作。
用于 JavaScript 开发的流行客户端库有 ReactJS、NextJS、Vue JS、Angular JS 等。
服务器端 JavaScript
在早期,JavaScript 用于前端开发,为 HTML 页面添加行为。自 2009 年以来,JavaScript 也用作服务器端编程语言来构建可扩展的动态 Web 应用程序。
Node.js 是用于使用 JavaScript 构建应用程序服务器的最佳且最流行的 JavaScript 运行时环境之一。使用Node.js,我们可以在浏览器外部执行 JavaScript 代码并管理服务器任务。服务器任务可以是与数据库、APIS、文件处理或网络通信的交互。由于 Node.js 的事件驱动架构,它比其他服务器端编程语言更快。
JavaScript 的优点
使用 JavaScript 的优点包括:
减少服务器交互 - 您可以在将页面发送到服务器之前验证用户输入。这节省了服务器流量,这意味着服务器负载更轻。
向访问者提供即时反馈 - 他们不必等待页面重新加载即可查看是否忘记输入某些内容。
增强交互性 - 您可以创建在用户将鼠标悬停在上面或通过键盘激活时做出反应的界面。
更丰富的界面 − 您可以使用 JavaScript 来包含诸如拖放组件和滑块等项目,为您的网站访问者提供丰富的界面。
JavaScript 的局限性
我们不能将 JavaScript 视为一门完整的编程语言。它缺少以下重要功能 −
客户端 JavaScript 不允许读取或写入文件。出于安全原因,此功能被限制。
JavaScript 不能用于网络应用程序,因为没有此类支持。
JavaScript 没有多线程功能。
再次强调,JavaScript 是一种轻量级的解释型编程语言,它允许您在原本静态的 HTML 页面中构建交互性。
命令式与声明式 JavaScript
命令式和声明式是编程范式,JavaScript 遵循这两种范式。
命令式 JavaScript − 在命令式 JavaScript 中,我们以代码描述获取输出的步骤的方式编写代码。因此,我们同时关注代码执行流程和输出。例如,要对所有数组元素求和,如果我们编写 for 循环代码,它会解释获取和的每个步骤。
声明式 JavaScript − 在声明式 JavaScript 中,我们不需要担心执行流程,但我们应该在最后得到正确的输出。例如,我们使用内置的 array.reduce() 方法来获取数组元素的和。在这里,我们不关心 reduce() 方法在库中是如何实现的。
JavaScript 开发工具
JavaScript 的主要优势之一是它不需要昂贵的开发工具。您可以从简单的文本编辑器(如记事本)开始。由于它是在 Web 浏览器上下文中解释的语言,您甚至不需要购买编译器。
以下是一些在使用 JavaScript 开发应用程序时可能有所帮助的免费工具。
Visual Studio Code (VS Code) − VS Code 是大多数开发人员用来编写 JavaScript 代码的代码编辑器。它功能丰富,包含各种可以提高任何开发人员生产力的扩展。
Chrome 开发者工具 − 程序员可以使用 Chrome 开发者工具调试 JavaScript 代码。但是,他们可以使用任何浏览器的调试工具,因为大多数浏览器都自带此工具。
以上 2 个工具提高了开发人员编写代码的效率。此外,您还可以使用其他工具,如 Git 进行版本控制,Webpack 构建您的应用程序等。
JavaScript 的现状
2015 年,JavaScript 的 ES6 版本发布,并进行了重大增强,包括面向对象的概念、匿名函数、模板字面量等。在2023 年 6 月,JavaScript 的第 14 个版本 ES14 (ECMAScript 2023) 发布。