Web-JavaScript-Study
<u> 作者:jason-wrj </u>
<u> 分类:服务器/网络服务器/JavaScript </u>
<u> 标签:Server, Web Server, JavaScript </u>
<u> 更多: www.dioit.com——迪欧IT——dio智能科技 </u>
<u> 更多: www.dioit.com——dioIT——嵌入式电子智能技术 </u>
1 JavaScript 概述
1.1 JavaScript 简介
JavaScript (简称 JS),是一种轻量级、 解释型 (或即时编译型)的弱类型 动态 编程语言,是基于原型、函数优先、支持 多范式 (如 面向对象 、 函数式编程 )的脚本语言。
它最初由 Brendan Eich 在 1995 年为 Netscape Navigator 浏览器设计,原名 LiveScript,后与 Sun 公司合作更改名为 JavaScript(营销策略,为蹭 Java 热度),与 Java 没有直接关系,但这个名字反映了当时 Java 的流行。
JavaScript 主要用于增强网页的动态交互性,现已成为 Web 开发的核心技术之一,是全栈开发的核心技术。
1.2 JavaScript 规范
语言规范由 ECMAScript (ES)定义 标准化 ,ES6(2015)新增模块化、箭头函数等革命性特性,最新版本为ES2023。
1.3 JavaScript 优势
生态丰富性
跨平台 :从浏览器到服务器均可运行。
前端框架:React、Vue、Angular 简化复杂应用开发。
后端工具:Express、Koa 构建 Web 服务,NestJS 支持企业级架构。
包管理:npm 仓库拥有超 300 万开源包,覆盖从工具链(Webpack)到数据库(MongoDB 驱动)的全链路需求。
开发效率
实时调试:浏览器开发者工具支持代码修改后即时生效。
模块化:ES6 引入 import/export,结合 Webpack 实现代码分割与懒加载。
快速迭代 :ECMAScript 每年更新一次,持续引入现代化特性。
学习曲线平缓
2 特性和组成
2.1 JavaScript 核心特性
2.2 Web 开发核心组成
3 应用和技术栈
3.1 应用领域
JavaScript 是一种广泛使用的编程语言,主要用于 Web 开发的前端和后端全栈开发。
领域
典型用途
代表技术/库
网页交互
DOM 操作、表单验证、动态内容加载
React/Vue/Angular
服务端
后端 API、实时通信、微服务
Node.js、Express
移动开发
跨平台应用开发
React Native、Ionic
桌面应用
跨操作系统桌面程序
Electron、NW.js
3.2 应用场景对比
场景
技术方案
优势
实时通信
WebSocket + Socket.IO
低延迟双向通信
状态管理
Redux / Vuex
可预测数据流
静态站点
Next.js / Gatsby
SEO 友好 + 服务端渲染
微前端架构
Module Federation
独立部署的组件集成
3.3 现代开发技术栈
3.4 发展趋势
性能持续优化
语言特性演进
架构模式创新
行业深度融合
AI 开发 :TensorFlow.js 实现浏览器端机器学习
边缘计算 :Cloudflare Workers 边缘 JS 运行时
元宇宙支持 :Three.js/Babylon.js 构建 Web3D 应用
框架持续演进 :如Next.js(服务端渲染)、Deno(安全运行时)。
3.5 JavaScript 最新发展(ES2025)
2025 年的 ECMAScript 标准(ES2025)引入了多项实用特性:
Promise .try (() => {
if (Math .random () < 0.5 ) throw new Error ("同步错误" );
return "成功" ;
}).catch (err => console .error (err ));
const A = new Set ([1 , 2 , 3 ]);
const B = new Set ([3 , 4 , 5 ]);
console .log (A .union (B ));
const regex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/ v ;
const match = regex .exec ("2025-08-18" );
console .log (match .groups .year );
4 编程规范
4.1 JS 语法概述
JavaScript 的语法与 Java、C 等语言有相似之处,包含变量声明、运算符、流程控制语句(如 if 语句、for 循环、switch 语句等)。
4.2 编成规范
变量 :其值在程序运行过程中是可变,用于存储某种数据/某些数值的存储器,想象成存储物品的盒子。
变量命名 :用于区分存储器(盒子),必须以字母、下划线( _)或美元符号( $)开头,后面可以跟字母、下划线、美元符号和数字。变量名区分大小写,且不允许使用 JavaScript 关键字和 JavaScript 保留字做变量名。
关键字 : break, case, catch, default, delete, do, else, finally, for, if, in, instanceof, new, return, switch, throw, try, typeof, var, void, while。
保留字 : abstract, boolean, byte, char, class, const, debugger, double, enum, export, extends, final, float, goto, implements, import, int, interface, long, native, package, private, protected, public, short, static, super, synchronized, throws, transient, volatile。
大小写 :JavaScript 区分大小写。
表达式 :表达式是指具有一定的值,用 操作符 把常数和变量连接起来的 代数式 。
操作符 :
算术操作符:( + 加法、 - 减法、 * 乘法、 / 除法、 % 余数、 ++ 自加一、 -- 自减一)
比较操作符:( < 小于、 > 大于、 <= 小于等于、 >= 大于等于、 ==等于、 != 不等于、 === 值及类型均相等(恒等于)、 !==值与类型均不等(不恒等于))
条件运算符:( 变量 = (条件) ? 值1:值2 符合条件赋值1,不符合赋值2)
逻辑操作符:( &&与、 || 或、 ! 非)
位运算符:( & 位与、 | 位或、 ~ 取反、 ^ 异或、 <<左移、 >> 右移)
字符串连接操作符:( + 连接运算符、 +=)
赋值运算符:( = 赋值、 +=、 -=、 *=、 /=、 %=)
操作符之间的 优先级 (左边 高 到右边 低 ):
如果要改变运算顺序,需添加 () 括号 的方法来改变优先级。
语句结束 :通常在每条语句的结尾加上一个(分号 ;),来表示语句的结束。
单行注释 :在注释内容前加(双斜杠符号 //).
多行注释 :以 “/ *” 开始,以 “ */” 结束。
4.3 编程范式
4.4 变量作用域与闭包
JavaScript 的变量虽然可以不声明,直接使用。但这样编程 不规范 ,建议先声明,后使用。
var my_var = 10 ;
my_var = "ABC" ;
my_var = true ;
let y = 20 ;
const PI = 3.14 ;
4.5 数据类型
原始基本类型 :
Number(含 BigInt)、 String、 Boolean、 Null、 Undefined、 Symbol(ES6 新增)。
对象引用类型 :
Object、 Array、 Function(包括 Array 数组、 Date 日期、 RegExp、函数等)。
类型
示例
描述
原始类型
let str = "hello";
按值访问,不可变
引用类型
let obj = {a: 1};
按引用访问,属性可变
特殊值
null, undefined
空值或未定义
Array 一维 数组 类型:
数组是一个值的 集合 ,每个值都有一个 索引号 ,从 0 开始,每个索引都有一个相应的值,根据需要添加更多数值。
var my_arr = new Array ();
var my_arr = new Array (10 );
my_arr [0 ] = "索引0,第1个数值" ;
my_arr [9 ] = "索引9,第10个数值" ;
var my_array = new Array (12 ,34 ,56 ,78 ,90 );
var my_array = [90 ,78 ,56 ,34 ,12 ];
my_array [5 ] = 100 ;
var my_var1 = my_array [4 ];
var my_var2 = my_array .length ;
Array 二维 数组 类型:
一维数组 myarray[ ],可以看成一组 小盒子 ,每个小盒子只能放一个内容。
二维数组 myarray[ ][ ],可以看成一组 大盒子 ,每个大盒子里面存放多个小盒子,每个小盒子只能放一个内容。
二维数组的两个维度的 索引值 也是从 0 开始,两个维度的最后一个索引值为长度 -1 。
var my_arr2 = [ [1 ,2 ,3 ],[4 ,5 ,6 ] ];
4.6 流程控制语句
if (condition ) {
}
if (condition ) {
} else {
}
if (condition_1 ) {
} else if (condition_2 ) {
} else if (condition_n ) {
} else {
}
switch (expression ) {
case value_1 :
break ;
case value_2 :
break ;
case value_n :
break ;
default :
}
for (初始化变量 ;循环条件 ;循环迭代 )
{
循环语句代码块 ;
}
for (let i = 0 ; i < 5 ; i ++ ) {
console .log (i );
}
while (判断条件 )
{
循环语句代码块 ;
}
do
{
循环语句代码块 ;
}
while (判断条件 )
break ;
continue ;
4.7 函数
JavaScript 中的函数是一等公民,支持函数表达式、函数嵌套、箭头函数( =>)和闭包等高级特性,函数既可以作为对象的方法,也可以作为独立的函数使用。
function add (a , b ) {
var sum = a + b ;
return sum ;
}
result = add (7 ,4 );
const multiply = (a , b ) => a * b ;
(function () {
console .log ('立即执行' );
})();
< script type ="text/javascript" >
function add ()
{
sum = 1 + 2 ;
alert (sum );
}
add ();
</ script >
< input type ="button" value ="click it" onclick ="add()" >
4.8 异步编程
fetch ('https://api.example.com/data' )
.then (response => response .json ())
.then (data => console .log (data ))
.catch (error => console .error (error ));
async function fetchData () {
try {
const response = await fetch ('https://api.example.com/data' );
const data = await response .json ();
console .log (data );
} catch (error ) {
console .error (error );
}
}
4.9 ES6+ 新特性
4.10 代码示例
<!DOCTYPE html>
< html >
< body >
< button id ="myButton" > 点击我</ button >
< p id ="text" ></ p >
< script >
document .getElementById ("myButton" ).addEventListener ("click" , () => {
document .getElementById ("text" ).innerHTML = "Hello, JavaScript!" ;
});
</ script >
</ body >
</ html >
const express = require ("express" );
const app = express ();
app .get ("/" , (req , res ) => {
res .send ("Hello from Node.js!" );
});
app .listen (3000 , () => {
console .log ("Server running on http://localhost:3000" );
});
async function fetchData () {
try {
const response = await fetch ('https://api.example.com/data' );
const data = await response .json ();
return data ? .results ? .map (item => ({ ... item , active : true }));
} catch (error ) {
console .error ("Fetch failed:" , error );
return [];
}
}
export class User {
#password; // 私有字段
constructor (name ) {
this .name = name ;
}
login = (pass ) => this .#password === pass;
}
5 HTML 引入 JavaScript
5.1 外部脚本
< head >
< script type ="application/javascript" src ="script1.js" > </ script >
< script type ="text/javascript" src ="script2.js" > </ script >
< script src ="script3.js" > </ script >
</ head >
5.2 内部脚本
< head >
< script type ="application/javascript" >
document .write ("JS 文档流输出文本" );
</ script >
</ head >
< body >
< script type ="application/javascript" >
document .write ("<h1>一级标题</h1>" );
document .write ("<p>文本段落。</p>" );
</ script >
</ body >
5.3 引入代码位置
JavaScript 代码,可以放在 HTML 页面中任何位置,但是浏览器解释 HTML 时是按先后顺序的,所以放置前面的 script 脚本就先被执行。
因此,进行页面显示初始化的 JavaScript 必须放在 <head>元素里面,因为初始化都要求提前进行(如给页面 <body> 设置 CSS 等)。
如果是通过事件调用执行的 function,那么 JavaScript 代码放置的位置没什么特别要求。
5.4 引入类型兼容性
<script>元素标签中的 type 属性,若设置为 type="application/javascript" ,在旧版浏览器中可能无法识别。
此时可以使用 type="text/javascript" 替代,或直接省略 type 属性。
6 动态页面事件
6.1 事件概述
JavaScript 可应用于创建动态页面。 事件 是可以被 JavaScript 侦测到的行为。 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件。
例如:当网页用户 单击按钮 或者 提交表单数据 时,就发生一个鼠标单击( onclick)事件,需要浏览器做出处理,再返回给网页用户一个结果。
使用事件,即在 HTML 网页元素 中设置该事件 属性 。
6.2 常用事件
< input name ="button1" type ="button" value ="点击提交" onclick ="submit1()" />
onmouseover: 鼠标经过 事件
当鼠标移到一个网页上的对象时,该对象就触发 onmouseover 事件,并执行 onmouseover 事件调用的 程序块 。
onmouseout: 鼠标移开 事件
当鼠标移开当前网页上的对象时,就触发 onmouseout 事件,执行 onmouseout 调用的 程序块 。
onchange:文本框 内容发生改变 事件
当 HTML 网页的文本框 内容发生改变 时,会触发 onchange 事件,同时执行 onchange 调用的 程序块 。
onselect:文本框 内容被选中 事件
当文本框或者文本域中的文字被选中时,触发 onselect 事件,同时 onselect 调用的 程序块 就会被执行。
onfocus: 光标聚集 事件
当网页中的对象获得聚点时,例如将光标移到 HTML 网页对象上 进行聚焦时 ,就会执行 onfocus 调用的 程序块 。
onblur: 光标离开 事件
onblur 事件与 onfocus 事件是相对互反的,例如将光标 离开当前获得聚焦 的 HTML 网页对象时,触发 onblur 事件,同时执行 onblur 调用的 程序块 。
onload: 网页加载 事件
在 页面加载完成后 ,写在 <body> 标签内的 onload 事件会立即发生,同时执行 onload 调用的 程序块 。
onunload: 网页卸载 事件
当用户 退出页面 时(页面关闭、页面刷新等),会触发 onunload 事件,同时执行 onunload 调用的 程序块 。
7 JavaScript 内置对象
7.1 JS 对象概述
JavaScript 中的 所有事物 都是对象,如:字符串、数值、数组、函数等,每个对象带有 属性 和 方法 。
对象的属性: 反映该对象某些特定的性质的。例如字符串的长度、图像的长宽等。
对象的方法: 能够在对象上执行的动作。例如表单的“提交”(Submit),时间的“获取”(getYear)等。
JavaScript 提供多个内置对象,比如 String、 Date、 Array 等等。使用 内置对象 前先定义,如下使用数组对象:
var obj_name1 = new Array ();
var obj_name2 = [];
obj_name1 .property_Name ;
obj_name2 .method_Name ;
7.2 Array 数组对象
Array 数组对象 属性
<数组对象>.length:返回数组的 长度 ,即数组里有多少个元素。
<数组对象>.constructor: 返回创建数组对象的 原型函数 。
Array.prototype:允许向数组对象 添加属性或方法 。
Array 数组对象 方法
[...]: 创建 一个新数组。
arrayObject.concat(array1,array2,...,arrayN);: 连接 两个或更多个数组,并返回结果。
该方法不会改变现有的数组 arrayObject,而仅仅会返回被连接数组的一个副本。
arrayObject.copyWithin(targetIndex,sourceIndex);:从数组的指定位置 拷贝 元素到数组的另一个指定位置中。
arrayObject.entries();:返回数组的可迭代对象,包含了数组的 键值对 。
arrayObject.keys();:返回数组的可迭代对象,包含原始数组的键(key)。
arrayObject.every(函数);:通过 函数 ,检测数值元素的每个元素是否都符合条件。
arrayObject.filter(函数);:通过函数,检测数值元素,并返回符合条件所有元素的 数组 。
arrayObject.find(函数);:返回符合测试(函数)条件的 数组元素 。
arrayObject.findIndex(函数);:返回符合测试(函数)条件的数组元素 索引 。
arrayObject.some(函数);:检测数组元素中是否有元素符合指定条件。
arrayObject.fill(固定值);:使用一个固定值来 填充 数组。
arrayObject.forEach(回调函数);:数组每个元素都执行一次 回调函数 。
arrayObject.reduce(回调函数);:将数组元素计算为一个值(从左到右)。
arrayObject.reduceRight(回调函数);:将数组元素计算为一个值(从右到左)。
arrayObject.from("字符串");:通过给定的对象中 创建 一个数组。
arrayObject.fromAsync();:从异步可迭代对象、可迭代对象或类数组对象 创建 一个新的数组。
arrayObject.includes(searchElement, fromIndex);:判断一个数组是否包含一个指定的值。
arrayObject.indexOf(searchElement);:搜索数组中的元素,并返回它所在的位置。
arrayObject.isArray(Object);:判断对象是否为数组。
arrayObject.map(function(currentValue, index,arr),thisValue);:通过指定函数处理数组的每个元素,并返回处理后的数组。
arrayObject.join(separator);:把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
separator 是可选的分隔符,若省略,则使用逗号 ,作为分隔符。
这个方法会返回一个字符串,该字符串把数组中的各个元素串起来,用<分隔符>置于元素与元素之间。这个方法 不影响 数组原本的内容。
arrayObject.reverse();:颠倒 反转 数组中元素的顺序。
arrayObject.reverse(); 会改变 原来的数组,而不会创建新的数组。
arrayObject.slice(start,end);:选取数组的一部分,并返回一个新数组,即从 start(包含)到 end(不包含)的 arrayObject 中的元素,并不会修改原数组。
start 是必需的起始位置。如果 start 是负数,则从数组尾部开始算起, -1 是最后一个元素, -2 是倒数第二个元素,以此类推。
end 是可选的结束位置。如果省略该参数,则切分的数组包含从 start 到数组结束的所有元素。如果 end 是负数,表示从数组尾部算起来的元素。
arrayObject.sort(sortMethod);:对数组的元素进行排序。
如果不指定 <sortMethod>,则按 unicode 码的顺序进行排列。
如果指定 <sortMethod>,则按 <方法函数sortMethod>所指定的排序方法进行排序。
sortMethod(A,B);比较函数应该具有两个参数 A 和 B,且该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。其返回值如下:
若返回值 <=-1,则表示 A 在排序后的序列中出现在 B 之前。 若返回值 >-1 && <1,则表示 A 和 B 具有相同的排序顺序。 若返回值 >=1,则表示 A 在排序后的序列中出现在 B 之后。
<数组对象>.shift();:删除并返回数组的第一个元素。
<数组对象>.unshift(新元素1,新元素2,...,新元素N);:向数组的开头添加一个或更多元素,并返回新的长度。
<数组对象>.pop();:删除数组的最后一个元素并返回删除的元素。
<数组对象>.push(新元素);:向数组的末尾添加一个或更多元素,并返回新的长度。
<数组对象>.splice(index,数量,item1,...,itemX);:从数组中添加或删除元素。
<数组对象>.toString();:将数组转换为字符串,并返回结果。
<数组对象>.toLocaleString(locales[, options]);:将数组转化为本地数组,并返回结果。根据当前环境的语言设置(locale)来格式化数组中的每个元素。
<数组对象>.valueOf();:返回数组对象的原始值。
Array.of():将一组值转换为数组。
Array.at():用于接收一个整数值并返回该索引对应的元素,允许正数和负数。负整数从数组中的最后一个元素开始倒数。
Array.flat():创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。
Array.flatMap():使用映射函数映射每个元素,然后将结果压缩成一个新数组。
Array.with():更新数组元素。
Array.findLastIndex():对数组中的每个元素执行一个函数。
Array.lastIndexOf():对数组中的每个元素执行一个函数。
Array.findLast():对数组中的每个元素执行一个函数。
Array.toReversed():反转数组中元素的顺序。
Array.toSorted():对数组中的元素按字母顺序进行排序。
Array.toSpliced():向数组中添加和/或移除元素。
[Symbol.iterator]() 返回一个数组迭代器对象,该对象会产生数组中每个索引的值。
7.3 Date 日期对象
日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒)。
var c_date = new Date ();
var d_date = new Date (2025 , 8 , 30 );
var d_date = new Date ('Oct 1, 2025' );
7.4 String 字符串对象
定义 String 字符串对象
直接赋值 ="字符串内容";
String 字符串对象 属性
stringObject.length:返回字符串的 长度 (字符数)。
Object.constructor:对创建该对象的函数的 引用 。
String.prototype:允许向对象 添加属性和方法 。
String 字符串对象 方法
stringObject.toUpperCase();:把小写字符串转换为 大写 字符串。
stringObject.toLowerCase();:把大写字符串转换为 小写 字符串。
stringObject.toLocaleUpperCase();:根据本地主机的语言环境把字符串转换为 大写 字符串。
stringObject.toLocaleLowerCase();:根据本地主机的语言环境把字符串转换为 小写 字符串。
stringObject.concat(str1,str2,...,strN);: 连接 两个或更多字符串,并返回新的字符串。
stringObject.startsWith("subString");:判查看字符串是否以指定的子字符串 开头 的(区分大小写)。
stringObject.endsWith("subString");:判断当前字符串是否以指定的子字符串 结尾 的(区分大小写)。
stringObject.fromCharCode(Unicode 编码);:将 Unicode 编码 转为字符。
stringObject.includes("subString");:查找字符串中是否 包含 指定的子字符串。
stringObject.match(正则表达式);:查找找到一个或多个 正则表达式 的匹配。
stringObject.replace("oldString","newString");:在字符串中查找匹配的 第一个 子串,并替换与正则表达式匹配的子串。
stringObject.replaceAll("oldString","newString");:在字符串中查找匹配的 所有 子串,并替换与正则表达式匹配的子串。
stringObject.search("subString");:查找与正则表达式相 匹配 的值。
stringObject.repeat(次数);:复制字符串指定 次数 ,并将它们连接在一起返回。
stringObject.slice(startPos,stopPos);:提取字符串的 片断 ,并在新的字符串中返回被提取的部分。
stringObject.trim();:去除字符串两边的 空白 。
stringObject.charAt(index);:返回在 指定位置 的字符。
字符串中第一个字符的 index 下标是 0,最后一个字符的 index 下标为字符串长度减一( string.length-1)。
如果参数 index 不在 0 与 string.length-1 之间, stringObject.charAt(index)方法将返回一个 空字符串 。
stringObject.charCodeAt(index);:返回在 指定位置 的字符的 Unicode 编码。
stringObject.indexOf("subString", startpos);:返回 指定字符串首次出现 的位置。
subString 是 必需 指定的 字符串 。
startpos 是 可选 的整数取值,从 0 到 string.length-1 选择,若省略 startpos ,表示从 0 (即首字符)开始检索 。
如果 stringObject.indexOf("subString", startpos) 要检索的字符串值没有出现,则该方法返回 -1 。
stringObject.lastIndexOf("subString");:从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置。
stringObject.split(separator,limit);:把字符串 分割 为字符串数组。
separator 是 必需 指定的 分隔符 ,若 separator 设置为(空字符串 " "),则表示每个字符都会被分割开。
limit 是 可选 的分割 次数 。如果 limit 参数 有设置值 ,则返回的(子字符串)数量不会多于这个设置值。如果 limit 参数 没有设置值 ,则不限制返回的(子字符串)数量。
stringObject.substring(startPos,stopPos);: 提取 字符串中两个指定的索引号之间的字符。
startPos 是 必需 指定的 开始位置 ,是一个 非负数 的整数。
stopPos 是 可选 指定的 结束位置 ,也是一个 非负数 的整数。如果省略 stopPos 参数,则返回的(子字符串)会一直到(原字符串)对象的结尾。
stringObject.substr(startPos,length);:从起始索引号提取字符串中指定 数目 的字符。
startPos 是 必需 指定的 起始位置 。如果 startPos 是负数,从字符串的 尾部 开始算起的位置。 -1 指字符串中 最后一个 字符, -2 指 倒数第二个 字符,以此类推。
length 是 可选 的长度,如果省略 length 参数,则返回从 startPos开始到 stringObject 对象结尾的字符。
stringObject.valueOf();:返回某个字符串对象的 原始值 。
Object.toString();:返回一个 字符串 。
7.5 Math 数学对象
Math 对象是一个固有的对象,无需创建它,直接把 Math 作为对象使用就可以调用 Math 所有属性和方法。这是 Math 对象与 Date,String 对象的区别。
Math 对象 属性
Math.E:返回算术常量 e,即自然对数的底数(约等于 2.718)。
Math.LN2:返回 2 的自然对数(约等于 0.693)。
Math.LN10:返回 10 的自然对数(约等于 2.302)。
Math.LOG2E:返回以 2 为底的 e 的对数(约等于 1.442)。
Math.LOG10E:返回以 10 为底的 e 的对数(约等于 0.434)。
Math.PI:返回圆周率(约等于 3.14159)。
Math.SQRT2:返回 2 的平方根(约等于 1.414)。
Math.SQRT1_2:返回 2 的平方根的倒数(约等于 0.707)。
Math 对象 方法
Math.abs(x);:返回 x 的绝对值。
Math.cos(x);:返回 x 的余弦值。
Math.sin(x);:返回 x 的正弦值。
Math.tan(x);:返回 x 的正切值。
Math.acos(x);:返回 x 的反余弦值。
Math.asin(x);:返回 x 的反正弦值。
Math.atan(x);:返回 x 的反正切值。
Math.atan2(y,x);:返回由 x 轴到点(x,y)的角度(以弧度为单位)。
Math.ceil(x);:返回 x 进行上舍入后的值,对 x 进行向上取整。
Math.floor(x);:返回 x 进行下舍入后的值,对 x 进行向下取整。
Math.round(x);:把 x 四舍五入为最接近的整数。
Math.exp(x);:返回 e的指数( x 次幂)。
Math.log(x);:返回 x 的自然对数(以 e 为底)。
Math.max(x,y);:返回 x 和 y 之中的最大值。
Math.min(x,y);:返回 x 和 y 之中的最小值。
Math.pow(x,y);:返回 x 的 y 次幂。
Math.sqrt(x);:返回 x 的平方根。
Math.random();:返回 0 ~ 1 之间的随机数,(大于或等于 0 ,但小于 1)。
Math.toSource();:返回 Math 对象的源代码。
Math.valueOf();:返回 Math 对象的原始值。
7.6 Boolean 对象
Boolean 对象用于转换一个不是 Boolean 类型的值转换为 Boolean 类型值 (true 或者false).
7.7 Number 对象
Number 对象是原始数值的包装对象。
7.8 RegExp 对象
RegExp 正则表达式是描述字符模式的对象。
正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。
var patt = new RegExp (pattern ,modifiers );
var patt = /pattern/ modifiers ;
7.9 Error 错误对象
Error 对象在错误发生时提供了错误的提示信息。
7.10 全局属性和全局函数
JavaScript 全局属性和函数可用于创建 Javascript 对象。
JavaScript 全局 属性
Infinity:代表正的无穷大的数值。
NaN:指示某个值是不是数字值。
undefined:指示未定义的值。
JavaScript 全局 函数
encodeURI("uri"):把字符串编码为 URI。
decodeURI("uri"):解码某个编码的 URI。
encodeURIComponent("uri"):把字符串编码为 URI 组件。
decodeURIComponent("uri"):解码一个编码的 URI 组件。
escape(string):对字符串进行编码。
unescape(string):对由 escape() 编码的字符串进行解码。
eval(string):计算 JavaScript 字符串,并把它作为脚本代码来执行。
isFinite(value):检查某个值是否为有穷大的数。
isNaN(value):检查某个值是否是数字。
Number(object):把对象的值转换为数字。
String(object):把对象的值转换为字符串。
parseFloat(string):解析一个字符串并返回一个浮点数。
parseInt(string,radix):解析一个字符串并返回一个整数。
radix 表示要解析的数字的基数,取值介于 2 ~ 36 之间。
8 BOM 浏览器对象
8.1 window 顶层对象
window 对象是 BOM 浏览器对象模型( B rowser O bject M odel)的核心,window 对象是指当前的浏览器窗口。
window 对象方法如下:
alert(str);:显示带有一段消息和一个确认按钮的警告框。
confirm(str);:显示带有一段消息和一个确认按钮、一个取消按钮的对话框。
prompt(str1,str2);:显示可提示用户输入的对话框,带有一段消息,一个输入文本框,一个确认按钮,一个取消按钮。
open();:打开一个新的浏览器窗口或查找一个已命名的窗口。
close();:关闭浏览器窗口。
print();:打印当前窗口的内容。
focus();:把键盘焦点给予有一个窗口。
blur();:把键盘焦点从顶层窗口移开。
moveBy();:可相对窗口的当前坐标,把窗口移动到指定的像素。
moveTo();:把窗口的左上角移动到指定的坐标。
resizeBy();:按照指定的像素调整窗口的大小。
resizeTo();:把窗口的大小调整到指定的宽度和高度。
scrollBy();:按照指定的像素值来滚动内容。
scrollTo();:把内容滚动到指定的坐标。
8.2 history 子对象
history 对象用于历史记录管理,该对象记录了用户曾经浏览过的页面(URL),并可以实现浏览器前进与后退相似导航的功能。
从 窗口 被打开的那一刻开始记录,每个浏览器窗口、每个标签页乃至每个框架,都有自己的 history 对象与特定的 window 对象关联。
8.3 location 子对象
location 用于 URL 操作,可获取或设置窗体的 URL,并且可以用于解析 URL。
8.4 navigator 子对象
navigator 对象包含有关浏览器的信息,用于浏览器信息检测,检测浏览器与操作系统的版本。
8.5 screen 子对象
screen 对象用于屏幕参数获取,可获取用户的屏幕信息。
8.6 Storage 子对象
Web 存储 API 提供了 localStorage(本地存储)和 sessionStorage (会话存储)两个存储对象来对网页的数据进行添加、删除、修改、查询操作。
Storage 对象 属性
Storage 对象 方法
Web 存储 API
8.7 document 对象
document 对象是 window 对象的一部分,可通过 window.document 对其进行访问。当浏览器载入 HTML 文档,HTML 文档就会成为 Document 对象 。Document 对象是 HTML 文档的根节点。Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。
9 DOM 对象
9.1 DOM 介绍
DOM 是 文档对象模型 ( D ocument O bject M odel),用于定义访问和处理 HTML 文档的标准方法。DOM 将 HTML 文档呈现为带有元素、属性和文本的树结构( 节点树 )。
HTML 文档可以表示为由 节点 构成的 集合 :
9.2 DOM 元素对象、NodeList 对象
9.3 DOM 属性对象、NamedNodeMap 对象
9.4 DOM 事件对象
HTML DOM 事件允许 Javascript 在HTML文档元素中注册不同事件处理程序。
事件通常与函数结合使用,函数不会在事件发生前被执行。
鼠标 事件
事件
描述
onclick
当用户点击某个对象时调用的事件句柄。
oncontextmenu
在用户点击鼠标右键打开上下文菜单时触发。
ondblclick
当用户双击某个对象时调用的事件句柄。
onmousedown
鼠标按钮被按下。
onmouseup
鼠标按键被松开。
onmouseenter
当鼠标指针移动到元素上时触发。
onmouseleave
当鼠标指针移出元素时触发。
onmouseover
鼠标移到某元素之上。
onmouseout
鼠标从某元素移开。
onmousemove
鼠标被移动。
键盘 事件
事件
描述
onkeydown
某个键盘按键被按下
onkeypress
某个键盘按键被按下并松开
onkeyup
某个键盘按键被松开
剪贴板 事件
事件
描述
oncopy
该事件在用户拷贝元素内容时触发。
oncut
该事件在用户剪切元素内容时触发。
onpaste
该事件在用户粘贴元素内容时触发。
打印 事件
事件
描述
onbeforeprint
该事件在页面即将开始打印时触发。
onafterprint
该事件在页面已经开始打印,或者打印窗口已经关闭时触发。
表单 事件
事件
描述
onfocus
元素获取焦点时触发。
onblur
元素失去焦点时触发。
onfocusin
元素即将获取焦点时触发。
onfocusout
元素即将失去焦点时触发。
oninput
元素获取用户输入时触发。
onsubmit
表单提交时触发。
onreset
表单重置时触发。
onchange
该事件在表单元素的内容改变时触发。( <input>、 <keygen>、 <select>、 <textarea>)
onsearch
用户向搜索域输入文本时触发。( <input="search">)
onselect
用户选取文本时触发。( <input>、 <textarea>)
拖动 事件
事件
描述
ondragstart
该事件在用户开始拖动元素时触发。
ondrag
该事件在元素正在拖动时触发。
ondragend
该事件在用户完成元素的拖动时触发。
ondragenter
该事件在拖动的元素进入放置目标时触发。
ondragover
该事件在拖动元素在放置目标上时触发。
ondrop
该事件在拖动元素放置在目标区域时触发。
ondragleave
该事件在拖动元素离开放置目标时触发。
多媒体(Media) 事件
事件
描述
oncanplay
事件在用户可以开始播放视频/音频(audio/video)时触发。
onplay
事件在视频/音频(audio/video)开始播放时触发。
onpause
事件在视频/音频(audio/video)暂停时触发。
onended
事件在视频/音频(audio/video)播放结束时触发。
oncanplaythrough
事件在视频/音频(audio/video)可以正常播放且无需停顿和缓冲时触发。
ondurationchange
事件在视频/音频(audio/video)的时长发生变化时触发。
onplaying
事件在视频/音频(audio/video)暂停或者在缓冲后准备重新开始播放时触发。
onwaiting
事件在视频由于要播放下一帧而需要缓冲时触发。
onloadstart
事件在浏览器开始寻找指定视频/音频(audio/video)触发。
onprogress
事件在浏览器下载指定的视频/音频(audio/video)时触发。
onerror
事件在视频/音频(audio/video)数据加载期间发生错误时触发。
onloadeddata
事件在浏览器加载视频/音频(audio/video)当前帧时触发触发。
onabort
事件在视频/音频(audio/video)终止加载时触发。
onloadedmetadata
事件在指定视频/音频(audio/video)的元数据加载后触发。
onseeking
事件在用户开始重新定位视频/音频(audio/video)时触发。
onseeked
事件在用户重新定位视频/音频(audio/video)的播放位置后触发。
onstalled
事件在浏览器获取媒体数据,但媒体数据不可用时触发。
onsuspend
事件在浏览器读取媒体数据中止时触发。
ontimeupdate
事件在当前的播放位置发送改变时触发。
onratechange
事件在视频/音频(audio/video)的播放速度发送改变时触发。
onvolumechange
事件在音量发生改变时触发。
onemptied
当期播放列表为空时触发。
框架/对象(Frame/Object) 事件
事件
描述
onabort
图像的加载被中断。( <object>)
onbeforeunload
该事件在即将离开页面(刷新或关闭)时触发
onerror
在加载文档或图像时发生错误。( <object>、 <body> 和 <frameset>)
onhashchange
该事件在当前 URL 的锚部分发生修改时触发。
onload
一张页面或一幅图像完成加载。
onpageshow
该事件在用户访问页面时触发。
onpagehide
该事件在用户离开当前网页跳转到另外一个页面时触发
onresize
窗口或框架被重新调整大小。
onscroll
当文档被滚动时发生的事件。
onunload
用户退出页面。( <body> 和 <frameset>)
过渡 事件
事件
描述
transitionend
该事件在 CSS 完成过渡后触发。
动画 事件
事件
描述
animationstart
该事件在 CSS 动画开始播放时触发。
animationend
该事件在 CSS 动画结束播放时触发。
animationiteration
该事件在 CSS 动画重复播放时触发。
其他 事件
事件
描述
ononline
该事件在浏览器开始在线工作时触发。
onoffline
该事件在浏览器开始离线工作时触发。
onmessage
该事件通过或者从对象(WebSocket, Web Worker, Event Source 或者子 frame 或父窗口)接收到消息时触发。
onwheel
该事件在鼠标滚轮在元素上下滚动时触发。
onpopstate
该事件在窗口的浏览历史(history 对象)发生改变时触发。
onshow
该事件当 <menu> 元素在上下文菜单显示时触发。
ontoggle
该事件在用户打开或关闭 <details> 元素时触发。
onstorage
该事件在 Web Storage(HTML 5 Web 存储)更新时触发。
visibilitychange
该事件用于检测当前页面的可见性状态是否发生变化。
Event 事件对象 常量
CAPTURING-PHASE :当前事件,处于捕获阶段。
事件从 Document 对象沿着文档树向下传递给目标节点。如果目标的任何一个先辈专门注册了捕获事件句柄,那么在事件传播过程中运行这些句柄。
AT-TARGET: 当前事件,处于目标阶段。在评估目标事件。
直接注册砸目标上的适合的事件句柄将运行。这与 0 级事件模型提供的事件处理方法相似。
BUBBLING-PHASE :当前事件,处于冒泡阶段。
在此阶段,事件将从目标元素向上传播回或起泡回 Document 对象的文档层次。
Event 事件对象 属性
event.bubbles:返回布尔值,指示事件是否是起泡事件类型。
event.cancelable:返回布尔值,指示事件是否可拥可取消的默认动作。
用 preventDefault() 方法可以取消与事件关联的默认动作。
event.currentTarget:返回其监听器触发事件的节点。即当前处理该事件的元素、文档或窗口。在捕获和起泡阶段,该属性是非常有用的。
event.eventPhase:返回事件传播的当前阶段。
event.target:返回事件的目标节点(触发该事件的节点)。例如生成事件的元素、文档或窗口。
event.timeStamp:返回一个时间戳。指示发生事件的日期和时间(从 epoch 开始的毫秒数)。
epoch 是一个事件参考点,是客户机启动的时间。
event.type:返回发生的事件的类型(当前 Event 对象表示的事件的名称)。
Event 事件对象 方法
initEvent();:初始化新创建的 Event 对象的属性。
preventDefault();:通知浏览器不要执行与事件关联的默认动作。
stopPropagation();:不再派发事件。
目标事件对象 方法
addEventListener();:允许在目标事件中注册监听事件(IE8 = attachEvent())。
dispatchEvent();:允许发送事件到监听器上(IE8 = fireEvent())。
removeEventListener();:运行一次注册在事件目标上的监听事件(IE8 = detachEvent())。
事件监听对象 方法
文档事件对象 方法
鼠标事件对象 属性
button:返回当事件被触发时,哪个鼠标按钮被点击。
clientX:返回当事件被触发时,鼠标指针的水平坐标。
clientY:返回当事件被触发时,鼠标指针的垂直坐标。
screenX:返回当某个事件被触发时,鼠标指针的水平坐标。
screenY:返回当某个事件被触发时,鼠标指针的垂直坐标。
relatedTarget:返回与事件的目标节点相关的节点。
鼠标事件对象 方法
键盘事件对象 属性
key:在按下按键时返回按键的标识符。
ctrlKey:返回当事件被触发时,”CTRL” 键是否被按下。
altKey:返回当事件被触发时,”ALT” 是否被按下。
shiftKey:返回当事件被触发时,”SHIFT” 键是否被按下。
metaKey:返回当事件被触发时,”meta” 键是否被按下。
which:返回 onkeypress 事件触发的键的值的字符代码,或者 onkeydown 或 onkeyup 事件的键的代码。
keyCode:返回 onkeypress 事件触发的键的值的字符代码,或者 onkeydown 或 onkeyup 事件的键的代码。
charCode:返回 onkeypress 事件触发键值的字母代码。
Location:返回按键在设备上的位置。
键盘事件对象 方法
9.5 DOM 控制台对象
Console 控制台对象提供了访问浏览器调试模式的信息到控制台。
控制台需要可见(浏览器按下 F12 打开控制台)。
Console 控制台对象 方法
console.assert(expression, message);:如果第一个参数断言为 false,则在信息到控制台输出错误信息。
console.warn(message);:输出警告信息,信息最前面加一个黄色三角,表示警告。该方法对于开发过程进行测试很有帮助。
console.error(message);:输出错误信息到控制台。该方法对于开发过程进行测试很有帮助。
console.info(message);:控制台输出一条信息。该方法对于开发过程进行测试很有帮助。
console.log(message);:控制台输出一条信息。该方法对于开发过程进行测试很有帮助。
console.table(tabledata, tablecolumns);:以表格形式显示数据。第一个参数是必需的,且对象类型需要是对象或数组,对应的数据会填充到表格中。控制台需要可见(浏览器按下 F12 打开控制台)。
console.clear();:清除控制台上的信息。在执行成功后,会在控制台输出: “Console was cleared”。
console.trace(label);:用于显示当前执行的代码在堆栈中的调用路径。
console.count(label);:记录 count()调用次数,一般用于计数。在调用时会将数字(调用次数)写入到控制台。
console.time(label);:作为计时器的起始方法,开始计时间。与 timeEnd() 联合使用,用于算出一个操作所花费的准确时间。
console.timeEnd(label);:作为计时器的结束方法,计时结束。与 time() 联合使用,用于算出一个操作所花费的准确时间。
console.group(label);:在控制台创建一个信息分组。 一个完整的信息分组以 console.group() 开始,以 console.groupEnd() 结束。
console.groupEnd();:设置当前信息分组结束。 一个完整的信息分组以 console.group() 开始,以 console.groupEnd() 结束。
console.groupCollapsed(label);:在控制台创建一个信息分组。 类似 console.group() ,但它默认是折叠的。
9.6 DOM CSS 样式声明对象
CSS 样式声明对象 (CSS Style Declaration)表示一个 CSS 属性-值 ( property-value )对的集合。
CSS 样式声明对象 属性
element.style.cssText:设置或返回样式声明文本,cssText 对应的是 HTML 元素的 style 属性。
element.style.length:返回样式中包含多少条声明。
object.parentRule:返回包含当前规则的规则。
CSS 样式声明对象 方法
object.getPropertyPriority(propertyname);:返回指定的 CSS 属性是否设置了 !important 属性。
object.getPropertyValue(propertyname);:返回指定的 CSS 属性值。
style.item(index);:通过索引方式返回 CSS 声明中的 CSS 属性名。
object.setProperty(propertyname,value,priority);:在 CSS 声明块中新建或者修改 CSS 属性。
object.removeProperty(propertyname);:移除 CSS 声明中的 CSS 属性。
9.7 DOM HTML 集合对象
HTML 集合对象 (HTML Collection)表示一个 HTML 元素的集合,类似一个包含 HTML 元素的数组列表。
例如通过 getElementsByTagName(标签名); 方法,返回的就是一个 HTML Collection 集合对象。
10 DOM 对象操作示例
10.1 DOM 获取 HTML 节点示例
通过 HTML 元素的 id 属性值,获取元素节点:
document.getElementById("id属性值");
通过 HTML 元素的 name 属性值,获取元素节点集合:
document.getElementsByName(name属性值);
通过 HTML 元素的 class 属性值,获取元素节点集合: document.getElementsByClassName(class属性值);
通过 HTML 元素的 tagName 标签名,获取元素节点集合: document.getElementsByTagName(标签名);
10.2 DOM 操作 HTML 元素示例
10.3 DOM 操作 CSS 样式示例
Object.style.property=new_style_Value;,用于改变 HTML 元素的样式。
Object.style.display = none;:将 Object 对象元素 隐藏 ,关闭显示。
Object.style.display = block;:将 Object 对象元素 显示为区块级 。
11 常用属性和函数方法
11.1 网页内容输出(document)
document .write ("hello world!" );
var mystr = "hello world!" ;
document .write (mystr );
document .write (mystr + "123" );
var mystr = "hello" ;
document .write (mystr + "<br>" );
document .write ("JavaScript" );
document .write (" " );
11.2 网页用户交互(window)
var mysrt = "hello world!" ;
alert (mysrt );
var response_massage = confirm ("确定或取消?" );
if (response_massage == true ){
document .write ("确定" );
}
else {
document .write ("取消" );
}
var input_content = prompt ("请输入内容,并点击确定按钮!" );
if (myname != null ) {
alert ("你输入的内容是:" + input_content );
}
else {
alert ("你点击的是取消按钮!" );
}
11.3 网页窗口操作(window)
打开窗口 : window.open([URL], [窗口名称], [参数字符串]);
window.open() 可以新建一个浏览器窗口,或者查找一个已经存在的浏览器窗口。
URL:可选参数,在窗口中要显示网页的网址或路径。
如果省略这个参数,或者它的值是空字符串,那么窗口就不显示任何文档。
窗口名称:可选参数,被打开窗口的名称。
窗口名称由字母、数字和下划线字符组成,不能包含空格,且多个窗口的名称必须唯一。 _blank 表示在新窗口显示目标网页, _self表示在当前窗口显示目标网页, _top用于框架网页中在上部窗口中显示目标网页。
参数字符串:可选参数,设置窗口参数,各参数用逗号隔开。
top=Number:设置窗口顶部和屏幕顶部的像素距离。
left=Number:设置窗口左边和屏幕左边的像素距离。
width=Number:设置窗口的宽度。
height=Number:设置窗口的高度。
menubar=yes|no:设置窗口有没有菜单栏。
toolbar=yes|no:设置窗口有没有工具栏。
status=yes|no:设置窗口有没有状态栏。
scrollbars=yes|no:设置窗口有没有滚动条。
window .open ('http://www.dioit.com' ,'_blank' ,'top=100,left=100,width=800,height=600,menubar=no,toolbar=no, status=no,scrollbars=yes' );
var window1 = window .open ('http://www.dioit.com' );
window1 .close ();
11.4 JavaScript 计时器
在 JavaScript 中,可以在设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。
(1) 间隔性触发计时器 :每隔一定的时间间隔就触发一次。
setInterval(代码,交互时间) 或 setInterval("代码()",交互时间):在每隔(指定的)时间,执行一次代码。
clearInterval(id_of_setInterval):取消 setInterval() 的设置。
(2) 一次性计时器 :仅在指定的延迟时间之后触发一次。
setTimeout(代码,延迟时间) 或 setTimeout("代码()",延迟时间) :在指定的延迟时间之后,执行代码。
clearTimeout(id_of_setTimeout):取消 setTimeout() 的设置。
12 浏览器网页尺寸
12.1 浏览器窗口可视区域
获得浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)的方法:
var browserVisibleWidth = document .documentElement .clientWidth
|| document .body .clientWidth ;
var browserVisibleHeight = document .documentElement .clientHeight
|| document .body .clientHeight ;
Document 对象的 body 属性,对应 HTML 文档的 <body> 标签:
document.body.clientWidth:HTML文档所在窗口的当前宽度。
document.body.clientHeight:HTML文档所在窗口的当前高度。
对于 Internet Explorer 8、7、6、5 :
document.documentElement.clientWidth:HTML文档所在窗口的当前宽度。
document.documentElement.clientHeight:HTML文档所在窗口的当前高度。
对于 IE9+、Chrome、Firefox、Opera、Safari :
window.innerWidth:表示的文档显示区域的宽度,不包括工具栏和地址栏等区域;
window.innerHeight:表示的文档显示区域的高度,不包括工具栏和地址栏等区域;
12.2 网页内容尺寸
scrollWidth 和 scrollHeight 属性,可用于获取网页内容宽度和高度。
var webpageContentWidth = document .documentElement .scrollWidth
|| document .body .scrollWidth ;
var webpageContentHeight = document .documentElement .scrollHeight
|| document .body .scrollHeight ;
12.3 网页内容尺寸(含滚动条)
offsetWidth 和 offsetHeight 属性,可用于获取网页内容宽度和高度(包括滚动条等边线,且会随窗口的显示大小改变)。
var webpageWidth = document .documentElement .offsetWidth
|| document .body .offsetWidth ;
var webpageHeight = document .documentElement .offsetHeight
|| document .body .offsetHeight ;
12.4 网页卷去的距离
12.5 网页的偏移量
Object.offsetLeft:获取指定对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置 。
offsetParent:CSS 布局中设置 postion属性( relative、 absolute、 fixed)的父容器,从最近的父节点开始,一层层向上找,直到 HTML 的 body 元素。
Object.offsetTop:获取指定对象相对于版面或由 offsetParent 属性指定的父坐标的计算顶端位置 。
offsetParent:CSS 布局中设置 postion属性( relative、 absolute、 fixed)的父容器,从最近的父节点开始,一层层向上找,直到 HTML 的 body 元素。
13 学习建议
13.1 学习路径
学习 JavaScript,可以构建从简单的网页交互到复杂的全栈应用的完整解决方案。
基础 :语法 → DOM → 异步编程(Promise)
进阶 :ES6+ → TypeScript → 框架原理
工程化 :单元测试(Jest)→ CI/CD → 性能优化
拓展 :Node.js 服务端开发 → WebGL 可视化
13.2 学习资源
官方文档:
MDN JavaScript 教程
ECMAScript 标准文档
入门教程:
菜鸟教程 JavaScript 教程
《JavaScript 基础教程(第9版)》
进阶学习:
关键资源 :
MDN Web Docs(权威文档)
JavaScript.info(现代教程)
StackBlitz(在线 IDE)
Node.js 官方指南(服务端开发)
14 总结
JavaScript 已从简单的网页脚本发展为 全平台通用语言 ,其生态持续引领 Web 技术革新,2025 年市场份额仍保持 >95% 的浏览器覆盖率(StatCounter 数据)。
JavaScript凭借其灵活性、全栈能力及庞大生态(npm库年下载量超万亿次),稳居全球最流行语言前三。掌握其核心概念(原型链、异步、闭包)及现代框架,是成为全栈工程师的必经之路。
JavaScript 不断发展,ES6 + 引入了许多新特性,如箭头函数、解构赋值、扩展运算符等,使代码更加简洁高效。它是 Web 开发不可或缺的一部分,并且在其他领域也有广泛应用。
JavaScript 从最初的网页脚本语言,已演变为覆盖全栈开发、跨平台应用、物联网和 AI 的“全能选手”。其核心优势在于灵活的语法、庞大的生态和持续进化的标准。对于开发者而言,掌握 JavaScript 不仅是进入 Web 开发的钥匙,更是适应全栈技术栈、参与新兴领域创新的基础。未来,随着性能提升和框架演进,JavaScript 将继续拓展其技术边界,成为连接数字世界与物理世界的核心桥梁。
随着技术的不断演进,JavaScript 仍然是现代软件开发的核心语言之一。
内容目录
迪欧IT——dio智能科技