简介:本文是一篇全面的JavaScript学习教程,涵盖了从基础语法到高级概念的完整学习路径,包括变量、函数、对象、DOM操作、异步编程等核心内容,并提供了实用的学习建议和代码示例,帮助读者系统掌握JavaScript编程技能。
JavaScript是一种轻量级的解释型编程语言,主要用于Web开发。作为前端开发的三大核心技术之一(HTML、CSS、JavaScript),它使网页能够实现动态交互效果。随着Node.js的出现,JavaScript的应用范围已经扩展到服务器端开发,成为全栈开发的首选语言。
JavaScript中有三种声明变量的方式:
var name = "张三"; // ES5方式,函数作用域
let age = 25; // ES6方式,块级作用域
const PI = 3.14; // ES6方式,常量
JavaScript的数据类型分为两大类:
JavaScript支持常见的算术、比较、逻辑运算符,以及一些特殊运算符:
condition ? expr1 : expr2
...
(ES6)?.
(ES2020)JavaScript提供了标准的控制结构:
// if语句
if (condition) {
// 代码块
} else if (anotherCondition) {
// 代码块
} else {
// 代码块
}
// for循环
for (let i = 0; i < 10; i++) {
console.log(i);
}
// while循环
while (condition) {
// 代码块
}
JavaScript中有多种定义函数的方式:
// 函数声明
function add(a, b) {
return a + b;
}
// 函数表达式
const multiply = function(a, b) {
return a * b;
};
// 箭头函数(ES6)
const divide = (a, b) => a / b;
JavaScript采用词法作用域(静态作用域),函数可以访问定义时的作用域链,即使函数在其他地方被调用。闭包是指函数能够记住并访问其词法作用域,即使函数在其词法作用域之外执行。
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 1
console.log(counter()); // 2
JavaScript中的对象是键值对的集合:
const person = {
name: "李四",
age: 30,
greet: function() {
console.log(`你好,我是${this.name}`);
}
};
JavaScript使用原型继承而非类继承(ES6的class只是语法糖):
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.greet = function() {
console.log(`你好,我是${this.name}`);
};
const person1 = new Person("王五", 35);
ES6引入了class语法,使面向对象编程更加直观:
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`你好,我是${this.name}`);
}
}
// 通过ID选择
const element = document.getElementById("myId");
// 通过类名选择
const elements = document.getElementsByClassName("myClass");
// 通过CSS选择器选择
const element = document.querySelector(".myClass");
const elements = document.querySelectorAll("div.myClass");
// 修改内容
element.textContent = "新文本";
element.innerHTML = "<strong>加粗文本</strong>";
// 修改样式
element.style.color = "red";
element.style.fontSize = "20px";
// 修改属性
element.setAttribute("data-id", "123");
const id = element.getAttribute("data-id");
function fetchData(callback) {
setTimeout(() => {
callback("数据");
}, 1000);
}
fetchData((data) => {
console.log(data);
});
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("数据");
// 或者 reject(new Error("错误信息"));
}, 1000);
});
}
fetchData()
.then(data => console.log(data))
.catch(error => console.error(error));
async function getData() {
try {
const data = await fetchData();
console.log(data);
} catch (error) {
console.error(error);
}
}
// 数组解构
const [first, second] = [1, 2];
// 对象解构
const { name, age } = { name: "张三", age: 25 };
// 导出
// math.js
export const add = (a, b) => a + b;
export const PI = 3.14;
// 导入
// app.js
import { add, PI } from './math.js';
通过系统学习这些内容,你将能够掌握JavaScript的核心概念和实际应用,为进一步学习前端框架(如React、Vue)或Node.js开发打下坚实基础。