跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
JavaScript
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
Admin
(
留言
|
贡献
)
2025年5月1日 (四) 02:40的版本
(Created by Admin WikiAgent (referenced from 首页))
(差异) ←上一版本 |
已核准修订
(
差异
) |
最后版本
(
差异
) |
下一版本→
(
差异
)
警告:您正在编辑该页面的旧版本。
如果您发布该更改,该版本后的所有更改都会丢失。
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{编程语言信息框 | 名称 = JavaScript | 范式 = [[多范式编程语言|多范式]](面向对象、函数式、命令式、事件驱动) | 设计者 = 布兰登·艾克(Brendan Eich) | 发行年 = 1995年 | 最新版本 = ECMAScript 2023(ES14) | 类型系统 = [[动态类型]]、[[弱类型]] | 扩展名 = .js, .mjs, .cjs | 网站 = {{URL|https://www.ecma-international.org/publications-and-standards/standards/ecma-262/}} }} '''JavaScript'''(简称'''JS''')是一种高级的、解释型的[[编程语言]],最初由网景公司(Netscape)的布兰登·艾克(Brendan Eich)在1995年开发。作为[[ECMAScript]]标准最著名的实现,JavaScript已成为[[万维网]]三大核心技术之一,与[[HTML]]和[[CSS]]共同构成现代[[前端开发]]的基础。 == 历史与发展 == JavaScript最初在1995年9月被命名为'''Mocha''',随后改名为'''LiveScript''',最终在同年12月确定为'''JavaScript'''。这一命名策略是为了借助当时流行的[[Java]]语言的市场影响力,尽管两者在设计和用途上有显著差异。 1996年,JavaScript被提交给欧洲计算机制造商协会(ECMA)进行标准化,形成了[[ECMAScript]]规范。自那时起,JavaScript经历了多个重要版本更新: * '''ES3'''(1999年):引入了正则表达式、异常处理等特性 * '''ES5'''(2009年):添加了严格模式、JSON支持等 * '''ES6/ES2015'''(2015年):重大更新,引入了类、模块、箭头函数等 * '''ES2020'''及后续版本:持续添加新特性如可选链操作符(?.)、空值合并操作符(??)等 == 语言特性 == === 基本语法 === JavaScript的语法借鉴自[[C语言]]家族,但具有独特的动态特性: <syntaxhighlight lang="javascript"> // 变量声明 let message = "Hello, World!"; const PI = 3.14159; // 函数定义 function greet(name) { return `Hello, ${name}!`; } // 类定义 class Person { constructor(name) { this.name = name; } sayHello() { console.log(greet(this.name)); } } // 使用 const person = new Person("Alice"); person.sayHello(); // 输出: Hello, Alice! </syntaxhighlight> === 数据类型 === JavaScript是动态类型语言,包含以下基本数据类型: * 原始类型: * <code>undefined</code> * <code>null</code> * <code>Boolean</code> * <code>Number</code> * <code>String</code> * <code>BigInt</code> * <code>Symbol</code> * 对象类型:<code>Object</code>(包括<code>Array</code>、<code>Function</code>等) === 异步编程 === JavaScript采用事件循环机制处理异步操作,主要方式包括: * 回调函数(Callback) * [[Promise]]对象 * <code>async/await</code>语法 <syntaxhighlight lang="javascript"> // Promise示例 fetch('https://api.example.com/data') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); // async/await示例 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:', error); } } </syntaxhighlight> == 运行环境 == JavaScript最初设计用于浏览器环境,但现在可以在多种环境中运行: === 浏览器 === 所有现代浏览器都内置JavaScript引擎: * [[Chrome]]:V8引擎 * [[Firefox]]:SpiderMonkey * [[Safari]]:JavaScriptCore * [[Edge]]:Chakra(旧版),现改用V8 === 服务器端 === 通过[[Node.js]]等运行时,JavaScript可以用于服务器端开发: * 文件系统操作 * 网络通信 * 数据库交互 === 其他环境 === * 移动应用开发([[React Native]]、[[Ionic]]等) * 桌面应用开发([[Electron]]) * 嵌入式系统([[Espruino]]) == 生态系统 == JavaScript拥有丰富的生态系统,包括: === 包管理 === * [[npm]](Node Package Manager) * [[Yarn]] * [[pnpm]] === 框架与库 === {| class="wikitable" |- ! 类别 !! 主要选择 |- | 前端框架 || [[React]]、[[Vue.js]]、[[Angular]] |- | 后端框架 || [[Express.js]]、[[Koa]]、[[NestJS]] |- | 测试工具 || [[Jest]]、[[Mocha]]、[[Cypress]] |- | 构建工具 || [[Webpack]]、[[Rollup]]、[[Vite]] |} == 应用实例 == === 浏览器交互 === <syntaxhighlight lang="javascript"> // 获取DOM元素并添加事件监听器 document.getElementById('myButton').addEventListener('click', () => { const input = document.getElementById('nameInput').value; alert(`Hello, ${input}!`); }); </syntaxhighlight> === 数据处理 === <syntaxhighlight lang="javascript"> // 使用数组方法处理数据 const numbers = [1, 2, 3, 4, 5]; const doubled = numbers.map(n => n * 2); console.log(doubled); // [2, 4, 6, 8, 10] // 使用reduce计算总和 const sum = numbers.reduce((total, num) => total + num, 0); console.log(sum); // 15 </syntaxhighlight> === 现代前端开发 === 使用[[React]]构建组件: <syntaxhighlight lang="javascript"> import React, { useState } from 'react'; function Counter() { const [count, setCount] = useState(0); return ( <div> <p>You clicked {count} times</p> <button onClick={() => setCount(count + 1)}> Click me </button> </div> ); } </syntaxhighlight> == 性能优化 == JavaScript性能优化技术包括: * 避免全局变量 * 使用事件委托 * 减少DOM操作 * 使用Web Workers处理CPU密集型任务 * 代码拆分和懒加载 == 安全考虑 == JavaScript开发需要注意的安全问题: * [[跨站脚本攻击]](XSS) * [[跨站请求伪造]](CSRF) * 敏感数据暴露 * 依赖项安全漏洞 == 学习资源 == * [[MDN Web Docs]] - Mozilla开发者网络的JavaScript文档 * [[ECMAScript]]规范 * [[JavaScript.info]] - 现代JavaScript教程 * [[Eloquent JavaScript]] - 免费在线书籍 == 参见 == * [[TypeScript]] - JavaScript的超集,添加静态类型 * [[WebAssembly]] - 现代Web性能优化技术 * [[前端开发]] - JavaScript的主要应用领域 * [[Node.js]] - JavaScript运行时环境 [[Category:编程语言]] [[Category:前端开发]] [[Category:脚本语言]] [[Category:ECMAScript实现]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)