从小白到精通 | 网页开发必学语言 | 包含对比、实用性和作业
JavaScript是一种运行在浏览器中的编程语言。它最初是为了在网页中添加交互效果而创建的,现在已经成为全栈开发的必学语言。
JavaScript在1995年由Brendan Eich在10天内创建。虽然名字中有"Java",但JavaScript和Java没有任何关系。这只是一个营销策略。
JavaScript是Web开发的基础。学好JavaScript,你就可以开发现代化的网页应用。
| 特性 | JavaScript | Python | Java |
|---|---|---|---|
| 学习难度 | ⭐⭐ 简单 | ⭐ 简单 | ⭐⭐⭐ 中等 |
| 执行环境 | 浏览器/Node.js | 本地/服务器 | JVM |
| 主要用途 | Web前端/后端 | 数据分析/AI | 企业应用 |
| 执行速度 | 中等 | 慢 | 快 |
| 开发速度 | 快 | 快 | 中等 |
任务:输出"Hello, World!"
JavaScript(1行):
console.log("Hello, World!");Python(1行):
print("Hello, World!")Java(8行):
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}JavaScript最大的优点就是不需要安装任何东西!
打开任何浏览器,按F12打开开发者工具,选择"Console"标签,就可以直接输入JavaScript代码。
创建一个 hello.html 文件:
<!DOCTYPE html>
<html>
<head>
<title>My First JavaScript</title>
</head>
<body>
<h1>Hello, World!</h1>
<script>
console.log("Hello, World!");
</script>
</body>
</html>用浏览器打开这个文件,按F12打开开发者工具,就能看到输出。
JavaScript不需要任何复杂的配置。只要有浏览器,就可以开始编程!
console.log("Hello, World!");<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1 id="greeting"></h1>
<script>
// 在页面上显示文本
document.getElementById('greeting').textContent = 'Hello, World!';
// 在控制台输出
console.log('Hello, World!');
</script>
</body>
</html>console.log() - 在浏览器控制台输出document.getElementById() - 获取HTML元素.textContent - 修改元素的文本内容JavaScript有7种基本数据类型。
// 数字
let age = 25;
let height = 1.75;
// 字符串
let name = "Alice";
let message = 'Hello';
// 布尔值
let isStudent = true;
let isTeacher = false;
// null和undefined
let empty = null;
let notDefined = undefined;
// 对象
let person = { name: "Bob", age: 30 };
// 数组
let fruits = ["apple", "banana", "orange"];
// 查看类型
console.log(typeof age); // "number"
console.log(typeof name); // "string"
console.log(typeof isStudent); // "boolean"JavaScript是动态类型语言,变量的类型可以在运行时改变。这给了你灵活性,但也容易出错。
// var(旧方式,不推荐)
var x = 10;
// let(推荐,块级作用域)
let y = 20;
// const(常量,不能修改)
const z = 30;let x = 10;
let y = 3;
// 算术运算
console.log(x + y); // 13
console.log(x - y); // 7
console.log(x * y); // 30
console.log(x / y); // 3.333...
console.log(x % y); // 1
console.log(x ** y); // 1000(幂运算)
// 比较运算
console.log(x > y); // true
console.log(x == y); // false
console.log(x === y); // false(严格相等)
// 逻辑运算
console.log(x > 5 && y < 5); // true
console.log(x > 5 || y > 5); // true
console.log(!true); // falseJavaScript有 == 和 === 两种相等运算符。=== 更严格,推荐使用。
let age = 18;
if (age < 13) {
console.log("儿童");
} else if (age < 18) {
console.log("青少年");
} else {
console.log("成年人");
}let day = 3;
switch (day) {
case 1:
console.log("星期一");
break;
case 2:
console.log("星期二");
break;
case 3:
console.log("星期三");
break;
default:
console.log("其他日期");
}let age = 18;
let status = age >= 18 ? "成年人" : "未成年人";
console.log(status); // "成年人"// 基本for循环
for (let i = 0; i < 5; i++) {
console.log(i); // 输出 0 1 2 3 4
}
// for...of循环(遍历数组)
let fruits = ["apple", "banana", "orange"];
for (let fruit of fruits) {
console.log(fruit);
}
// for...in循环(遍历对象)
let person = { name: "Alice", age: 25 };
for (let key in person) {
console.log(key + ": " + person[key]);
}let count = 0;
while (count < 3) {
console.log(count);
count++;
}
// do...while循环(至少执行一次)
let x = 0;
do {
console.log(x);
x++;
} while (x < 3);函数是可重用的代码块。
// 函数声明
function add(a, b) {
return a + b;
}
console.log(add(5, 3)); // 8
// 函数表达式
const multiply = function(a, b) {
return a * b;
};
console.log(multiply(4, 5)); // 20
// 箭头函数(ES6)
const subtract = (a, b) => {
return a - b;
};
console.log(subtract(10, 3)); // 7
// 简化的箭头函数
const square = x => x * x;
console.log(square(5)); // 25// 默认参数
function greet(name = "Guest") {
console.log("Hello, " + name);
}
greet(); // Hello, Guest
greet("Alice"); // Hello, Alice
// 剩余参数
function sum(...numbers) {
let total = 0;
for (let num of numbers) {
total += num;
}
return total;
}
console.log(sum(1, 2, 3, 4, 5)); // 15// 创建对象
let person = {
name: "Alice",
age: 25,
city: "Beijing",
greet: function() {
console.log("Hello, I'm " + this.name);
}
};
// 访问属性
console.log(person.name); // Alice
console.log(person["age"]); // 25
// 修改属性
person.age = 26;
// 调用方法
person.greet(); // Hello, I'm Alice
// 添加新属性
person.email = "alice@example.com";// 创建数组
let fruits = ["apple", "banana", "orange"];
// 访问元素
console.log(fruits[0]); // apple
// 数组长度
console.log(fruits.length); // 3
// 添加元素
fruits.push("grape");
// 删除元素
fruits.pop();
// 遍历数组
fruits.forEach(function(fruit) {
console.log(fruit);
});
// 数组方法
let numbers = [1, 2, 3, 4, 5];
let doubled = numbers.map(x => x * 2); // [2, 4, 6, 8, 10]
let evens = numbers.filter(x => x % 2 === 0); // [2, 4]DOM(文档对象模型)是网页的结构。JavaScript可以动态修改DOM。
// 通过ID选择
let element = document.getElementById("myId");
// 通过类名选择
let elements = document.getElementsByClassName("myClass");
// 通过标签名选择
let divs = document.getElementsByTagName("div");
// 使用CSS选择器(推荐)
let element = document.querySelector("#myId");
let elements = document.querySelectorAll(".myClass");let element = document.getElementById("myElement");
// 修改文本内容
element.textContent = "新文本";
// 修改HTML内容
element.innerHTML = "<strong>加粗文本</strong>";
// 修改样式
element.style.color = "red";
element.style.fontSize = "20px";
// 添加/移除类
element.classList.add("active");
element.classList.remove("inactive");
element.classList.toggle("highlight");// 创建元素
let newDiv = document.createElement("div");
newDiv.textContent = "新的div";
// 添加到页面
document.body.appendChild(newDiv);
// 删除元素
let element = document.getElementById("myElement");
element.remove();事件是用户与网页的交互(点击、输入等)。
// 方法1:在HTML中添加
<button onclick="handleClick()">点击我</button>
// 方法2:在JavaScript中添加(推荐)
let button = document.getElementById("myButton");
button.addEventListener("click", function() {
console.log("按钮被点击了");
});
// 使用箭头函数
button.addEventListener("click", () => {
console.log("按钮被点击了");
});let input = document.getElementById("myInput");
// 点击事件
element.addEventListener("click", () => {
console.log("被点击");
});
// 输入事件
input.addEventListener("input", (event) => {
console.log(event.target.value);
});
// 提交事件
let form = document.getElementById("myForm");
form.addEventListener("submit", (event) => {
event.preventDefault(); // 阻止默认行为
console.log("表单被提交");
});
// 鼠标事件
element.addEventListener("mouseover", () => {
console.log("鼠标悬停");
});
element.addEventListener("mouseout", () => {
console.log("鼠标离开");
});<!DOCTYPE html>
<html>
<head>
<title>事件示例</title>
</head>
<body>
<button id="myButton">点击我</button>
<p id="message"></p>
<script>
let button = document.getElementById("myButton");
let message = document.getElementById("message");
button.addEventListener("click", () => {
message.textContent = "你点击了按钮!";
message.style.color = "red";
});
</script>
</body>
</html>场景:用户点击按钮,页面动态显示内容。
技术:事件监听、DOM操作
场景:用户提交表单前,验证输入是否合法。
技术:表单事件、条件判断
场景:不刷新页面,从服务器获取数据。
技术:Fetch API、Promise
场景:开发聊天应用、协作工具等实时应用。
技术:WebSocket、React/Vue框架
场景:使用React Native开发跨平台手机应用。
技术:React Native框架
JavaScript已经从一个简单的脚本语言发展成为全栈开发的核心语言。
⭐ 简单 | ⭐⭐ 中等 | ⭐⭐⭐ 困难 | ⭐⭐⭐⭐ 挑战
要求:创建一个简单的计算器,实现加减乘除。
要求:根据时间显示不同的问候语(早上、下午、晚上)。
要求:创建一个待办事项应用,支持添加、删除、标记完成。
要求:创建一个注册表单,验证邮箱和密码。
要求:使用API获取天气数据,动态显示在网页上。
要求:创建一个简单的聊天应用,支持消息实时发送和接收。
完成作业后,可以在我们的客服中心提交你的代码。
现在你已经掌握了JavaScript的核心概念。
JavaScript学习的关键是多做项目,多练习。不要只看教程,要动手写代码。