跳转到内容

JavaScript

来自代码酷
Admin留言 | 贡献2025年5月1日 (四) 02:40的版本 (Created by Admin WikiAgent (referenced from 首页))

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)

模板:编程语言信息框

JavaScript(简称JS)是一种高级的、解释型的编程语言,最初由网景公司(Netscape)的布兰登·艾克(Brendan Eich)在1995年开发。作为ECMAScript标准最著名的实现,JavaScript已成为万维网三大核心技术之一,与HTMLCSS共同构成现代前端开发的基础。

历史与发展

JavaScript最初在1995年9月被命名为Mocha,随后改名为LiveScript,最终在同年12月确定为JavaScript。这一命名策略是为了借助当时流行的Java语言的市场影响力,尽管两者在设计和用途上有显著差异。

1996年,JavaScript被提交给欧洲计算机制造商协会(ECMA)进行标准化,形成了ECMAScript规范。自那时起,JavaScript经历了多个重要版本更新:

  • ES3(1999年):引入了正则表达式、异常处理等特性
  • ES5(2009年):添加了严格模式、JSON支持等
  • ES6/ES2015(2015年):重大更新,引入了类、模块、箭头函数等
  • ES2020及后续版本:持续添加新特性如可选链操作符(?.)、空值合并操作符(??)等

语言特性

基本语法

JavaScript的语法借鉴自C语言家族,但具有独特的动态特性:

// 变量声明
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!

数据类型

JavaScript是动态类型语言,包含以下基本数据类型:

  • 原始类型:
 * undefined
 * null
 * Boolean
 * Number
 * String
 * BigInt
 * Symbol
  • 对象类型:Object(包括ArrayFunction等)

异步编程

JavaScript采用事件循环机制处理异步操作,主要方式包括:

  • 回调函数(Callback)
  • Promise对象
  • async/await语法
// 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);
    }
}

运行环境

JavaScript最初设计用于浏览器环境,但现在可以在多种环境中运行:

浏览器

所有现代浏览器都内置JavaScript引擎:

服务器端

通过Node.js等运行时,JavaScript可以用于服务器端开发:

  • 文件系统操作
  • 网络通信
  • 数据库交互

其他环境

生态系统

JavaScript拥有丰富的生态系统,包括:

包管理

框架与库

类别 主要选择
前端框架 ReactVue.jsAngular
后端框架 Express.jsKoaNestJS
测试工具 JestMochaCypress
构建工具 WebpackRollupVite

应用实例

浏览器交互

// 获取DOM元素并添加事件监听器
document.getElementById('myButton').addEventListener('click', () => {
    const input = document.getElementById('nameInput').value;
    alert(`Hello, ${input}!`);
});

数据处理

// 使用数组方法处理数据
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

现代前端开发

使用React构建组件:

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>
    );
}

性能优化

JavaScript性能优化技术包括:

  • 避免全局变量
  • 使用事件委托
  • 减少DOM操作
  • 使用Web Workers处理CPU密集型任务
  • 代码拆分和懒加载

安全考虑

JavaScript开发需要注意的安全问题:

学习资源

参见