JavaScript基础教程

学习如何使用JavaScript为网页添加交互功能

什么是JavaScript

JavaScript是一种脚本语言,用于为网页添加交互功能。它是Web开发中最重要的编程语言之一,可以用于:

JavaScript基础语法

1. 变量声明

// 使用let声明变量(推荐) let name = "John"; let age = 25; // 使用const声明常量 const PI = 3.14159; // 使用var声明变量(旧方式,不推荐) var oldWay = "不推荐使用";

2. 数据类型

// 字符串 let text = "Hello World"; // 数字 let number = 42; let decimal = 3.14; // 布尔值 let isTrue = true; let isFalse = false; // 数组 let fruits = ["苹果", "香蕉", "橙子"]; // 对象 let person = { name: "张三", age: 30, city: "北京" }; // null和undefined let empty = null; let notDefined = undefined;

3. 运算符

// 算术运算符 let sum = 5 + 3; // 加法 let diff = 10 - 4; // 减法 let product = 6 * 2; // 乘法 let quotient = 15 / 3; // 除法 let remainder = 10 % 3; // 取余 // 比较运算符 let isEqual = 5 === 5; // 严格相等 let isNotEqual = 5 !== 3; // 不相等 let isGreater = 10 > 5; // 大于 let isLess = 3 < 7; // 小于 // 逻辑运算符 let and = true && false; // 逻辑与 let or = true || false; // 逻辑或 let not = !true; // 逻辑非

函数

1. 函数声明

// 基本函数声明 function greet(name) { return "Hello, " + name + "!"; } // 箭头函数 const greetArrow = (name) => { return "Hello, " + name + "!"; }; // 简写箭头函数 const greetShort = name => "Hello, " + name + "!";

2. 函数参数

// 默认参数 function greet(name = "Guest") { return "Hello, " + name + "!"; } // 剩余参数 function sum(...numbers) { return numbers.reduce((total, num) => total + num, 0); } // 解构参数 function printPerson({name, age}) { console.log(`${name} is ${age} years old`); }

函数示例

控制流程

1. 条件语句

// if-else语句 if (age >= 18) { console.log("成年人"); } else { console.log("未成年人"); } // switch语句 switch (day) { case "Monday": console.log("星期一"); break; case "Tuesday": console.log("星期二"); break; default: console.log("其他日期"); } // 三元运算符 let status = age >= 18 ? "成年人" : "未成年人";

2. 循环语句

// for循环 for (let i = 0; i < 5; i++) { console.log(i); } // while循环 let i = 0; while (i < 5) { console.log(i); i++; } // for...of循环(遍历数组) for (let fruit of fruits) { console.log(fruit); } // for...in循环(遍历对象) for (let key in person) { console.log(key + ": " + person[key]); }

循环示例

DOM操作

1. 选择元素

// 通过ID选择 const element = document.getElementById("myId"); // 通过类名选择 const elements = document.getElementsByClassName("myClass"); // 通过标签名选择 const paragraphs = document.getElementsByTagName("p"); // 使用querySelector const firstElement = document.querySelector(".myClass"); const allElements = document.querySelectorAll(".myClass");

2. 修改元素

// 修改内容 element.textContent = "新文本"; element.innerHTML = "HTML内容"; // 修改属性 element.setAttribute("class", "newClass"); element.style.color = "red"; // 添加/删除类 element.classList.add("newClass"); element.classList.remove("oldClass"); element.classList.toggle("active");

3. 事件处理

// 添加事件监听器 element.addEventListener("click", function(event) { console.log("元素被点击"); }); // 移除事件监听器 element.removeEventListener("click", handler); // 常见事件类型 // click - 点击 // mouseover - 鼠标悬停 // keydown - 按键按下 // submit - 表单提交 // load - 页面加载完成

DOM操作示例

异步编程

1. Promise

// 创建Promise const myPromise = new Promise((resolve, reject) => { // 异步操作 setTimeout(() => { const success = true; if (success) { resolve("操作成功"); } else { reject("操作失败"); } }, 1000); }); // 使用Promise myPromise .then(result => console.log(result)) .catch(error => console.error(error));

2. Async/Await

// 异步函数 async function fetchData() { try { const response = await fetch('https://api.example.com/data'); const data = await response.json(); return data; } catch (error) { console.error('Error:', error); } } // 使用异步函数 fetchData().then(data => console.log(data));

异步编程示例

错误处理

1. Try-Catch

try { // 可能出错的代码 throw new Error("这是一个错误"); } catch (error) { console.error("捕获到错误:", error.message); } finally { console.log("无论是否出错都会执行"); }

2. 错误类型

// 常见错误类型 try { // TypeError null.someMethod(); } catch (error) { if (error instanceof TypeError) { console.log("类型错误"); } else if (error instanceof ReferenceError) { console.log("引用错误"); } else { console.log("其他错误"); } }

错误处理示例