JavaScript 是一种广泛用于网页和网络应用的编程语言,支持事件驱动、函数式以及基于原型的编程风格。
在 ES6(ECMAScript 2015)之前,主要使用 var
来声明变量。ES6 引入了 let
和 const
。
javascriptvar globalVar = "I'm global";
let blockScoped = "Block scoped";
const constantValue = "Constant value"; // 不可重新赋值
JavaScript 支持多种数据类型:
number
, string
, boolean
, null
, undefined
, symbol
(ES6 新增)。object
(包括数组、日期等)。javascriptlet age = 25; // number
let name = "Alice"; // string
let isStudent = true; // boolean
let nothing = null; // null
let und = undefined; // undefined
let sym = Symbol("foo"); // symbol
包括算术运算符(如 +
, -
, *
, /
, %
)、比较运算符(如 ==
, ===
, !=
, !==
, >
, <
)、逻辑运算符(如 &&
, ||
, !
)等。
javascriptlet result = 5 + 3; // 8
console.log(result === 8); // true, 使用严格等于避免类型转换问题
javascriptif (condition) {
// code to execute if condition is true
} else if (anotherCondition) {
// alternative condition
} else {
// default case
}
for
循环javascriptfor (let i = 0; i < 5; i++) {
console.log(i);
}
while
循环javascriptlet j = 0;
while (j < 5) {
console.log(j++);
}
javascriptfunction greet(name) {
return "Hello, " + name;
}
console.log(greet("World")); // 输出: Hello, World
ES6 引入了箭头函数:
javascriptconst greet = (name) => "Hello, " + name;
javascriptlet person = {
firstName: "John",
lastName: "Doe",
fullName: function() {
return this.firstName + " " + this.lastName;
}
};
console.log(person.fullName()); // John Doe
javascriptlet fruits = ["Apple", "Banana", "Cherry"];
console.log(fruits[1]); // Banana
fruits.push("Date");
console.log(fruits); // ["Apple", "Banana", "Cherry", "Date"]
使用 try...catch
结构来处理异常。
javascripttry {
// 可能抛出错误的代码
notDefinedFunction();
} catch (e) {
console.error("Caught an error: ", e.message);
}
JavaScript 在网页开发中广泛用于响应用户操作(如点击、输入等)。这通过事件处理机制实现。
javascriptdocument.getElementById('myButton').addEventListener('click', function() {
alert('Button clicked!');
});
这段代码会在用户点击 ID 为 myButton
的按钮时弹出一个警告框。
JavaScript 是单线程语言,但支持异步操作,主要通过回调函数、Promise 和 async/await 实现。
javascriptsetTimeout(function() {
console.log("This runs after 2 seconds");
}, 2000);
javascriptlet promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("Done!"), 1000);
});
promise.then(result => console.log(result)); // 输出: Done!
javascriptasync function asyncFunction() {
let result = await new Promise((resolve) =>
setTimeout(() => resolve("Finished"), 2000)
);
console.log(result); // 输出: Finished
}
asyncFunction();
ES6 引入了原生的模块支持,允许你将代码分割成多个文件,并在需要的地方导入使用。
javascript// math.js
export function add(a, b) { return a + b; }
export function subtract(a, b) { return a - b; }
javascript// main.js
import { add, subtract } from './math.js';
console.log(add(5, 3)); // 输出: 8
console.log(subtract(5, 3)); // 输出: 2
ES6 引入了更接近传统面向对象编程的语言特性,比如类和继承。
javascriptclass Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} makes a noise.`);
}
}
javascriptclass Dog extends Animal {
speak() {
console.log(`${this.name} barks.`);
}
}
let d = new Dog('Mitzie');
d.speak(); // 输出: Mitzie barks.
ES6 引入了模板字符串,使得字符串拼接更加方便。
javascriptlet name = "Alice";
let greeting = `Hello, ${name}!`;
console.log(greeting); // 输出: Hello, Alice!
解构赋值是一种从数组或对象中提取数据并赋值给变量的便捷方式。
javascriptlet [a, b] = [10, 20];
console.log(a); // 输出: 10
console.log(b); // 输出: 20
javascriptlet person = {name: "John", age: 30};
let {name, age} = person;
console.log(name); // 输出: John
console.log(age); // 输出: 30
...
) 允许我们将不定数量的参数表示为数组。...
) 可以展开数组或对象。javascriptfunction sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3)); // 输出: 6
javascriptlet arr1 = [1, 2, 3];
let arr2 = [...arr1, 4, 5, 6];
console.log(arr2); // 输出: [1, 2, 3, 4, 5, 6]
这些是 JavaScript 更多的基础知识。