1. JavaScript 简介

1.1 什么是 JavaScript?

JavaScript 是一种轻量级的编程语言,主要运行在浏览器中,负责实现网页的交互功能。它是由 Netscape 公司于 1995 年发明的,目前已经成为网页开发的核心技术之一。

1.2 JavaScript 的特点

  • 动态性:JavaScript 是一种动态类型语言,允许在运行时进行类型转换。
  • 跨平台性:JavaScript 代码可以在任何支持 JavaScript 的浏览器中运行。
  • 事件驱动:JavaScript 使用事件驱动模型,可以响应用户的操作(如点击、键盘输入等)。

2. 基本语法

2.1 变量和数据类型

JavaScript 中的变量使用 varletconst 关键字声明,数据类型有数字、字符串、布尔值、对象等。

let age = 25; // 数字
let name = '张三'; // 字符串
let isStudent = true; // 布尔值
let person = {name: '李四', age: 30}; // 对象

2.2 运算符

JavaScript 支持各种运算符,如算术运算符、关系运算符、逻辑运算符等。

let a = 5;
let b = 10;
console.log(a + b); // 15
console.log(a > b); // false

2.3 控制流

JavaScript 使用 ifelseswitchforwhile 等语句控制程序流程。

let x = 5;
if (x > 3) {
  console.log('x 大于 3');
} else {
  console.log('x 不大于 3');
}

3. 函数

3.1 函数定义

JavaScript 中的函数使用 function 关键字定义,可以接受参数并返回值。

function sayHello(name) {
  console.log('Hello, ' + name);
}

sayHello('张三'); // 输出:Hello, 张三

3.2 函数调用

函数可以通过函数名直接调用,也可以通过变量调用。

let func = function() {
  console.log('我是一个匿名函数');
};

func(); // 输出:我是一个匿名函数

4. 对象

4.1 对象创建

JavaScript 中的对象使用 {} 创建,可以包含属性和方法。

let person = {
  name: '李四',
  age: 30,
  sayHello: function() {
    console.log('Hello, ' + this.name);
  }
};

person.sayHello(); // 输出:Hello, 李四

4.2 属性访问

对象的属性可以通过点语法或方括号语法访问。

console.log(person.name); // 输出:李四
console.log(person['age']); // 输出:30

5. 数组

5.1 数组创建

JavaScript 中的数组使用 [] 创建,可以存储任意类型的数据。

let numbers = [1, 2, 3, 4, 5];

5.2 数组方法

JavaScript 提供了丰富的数组方法,如 pushpopmapfilter 等。

numbers.push(6); // 数组变为 [1, 2, 3, 4, 5, 6]
numbers.pop(); // 数组变为 [1, 2, 3, 4, 5]
let evenNumbers = numbers.filter(num => num % 2 === 0); // evenNumbers 变为 [2, 4]

6. 事件处理

6.1 事件监听

JavaScript 可以监听元素上的事件,并在事件发生时执行相应的函数。

<button id="myButton">点击我</button>

<script>
let button = document.getElementById('myButton');
button.addEventListener('click', function() {
  console.log('按钮被点击了');
});
</script>

6.2 事件冒泡和捕获

事件在 DOM 树中传播,分为冒泡阶段和捕获阶段。可以通过 addEventListener 的第三个参数控制事件处理器的绑定阶段。

<div id="container">
  <div id="child">子元素</div>
</div>

<script>
let container = document.getElementById('container');
container.addEventListener('click', function() {
  console.log('容器被点击了');
}, true); // 在捕获阶段处理事件

7. 高级特性

7.1 闭包

闭包是 JavaScript 中一个非常重要的概念,允许函数访问外部函数的变量。

function outerFunction() {
  let outerVariable = '外部变量';
  return function innerFunction() {
    console.log(outerVariable);
  };
}

let myFunction = outerFunction();
myFunction(); // 输出:外部变量

7.2 生成器

生成器函数可以暂停执行,并在需要时恢复执行,返回一个迭代器。

function* generator() {
  yield '第一项';
  yield '第二项';
  yield '第三项';
}

let myGenerator = generator();
console.log(myGenerator.next().value); // 输出:第一项
console.log(myGenerator.next().value); // 输出:第二项
console.log(myGenerator.next().value); // 输出:第三项

7.3 模块化

模块化是 JavaScript 的一种编程范式,可以将代码组织成模块,方便复用和维护。

// module.js
export function add(a, b) {
  return a + b;
}

// main.js
import { add } from './module.js';
console.log(add(1, 2)); // 输出:3

8. 总结

JavaScript 是一种功能强大的编程语言,广泛应用于网页开发领域。本文介绍了 JavaScript 的基本语法、函数、对象、数组、事件处理等基本概念,并探讨了闭包、生成器、模块化等高级特性。通过学习本文,读者可以快速入门 JavaScript,为后续的学习打下坚实基础。