上一篇
根据ECMAScript 2025规范,JavaScript迎来重大更新!新增JSON模块导入、Temporal日期API、管道操作符等特性,同时类私有字段和解构赋值的语法进一步优化,这些更新让代码更简洁、性能更强大!💡
class Person { // 构造函数:初始化实例属性 constructor(name, age) { this.name = name; this.age = age; } // 实例方法:通过实例调用 greet() { console.log(`Hi, I'm ${this.name}!`); } // 静态方法:通过类名直接调用 static info() { console.log("This is a Person class."); } } const alice = new Person("Alice", 25); alice.greet(); // 输出:Hi, I'm Alice! Person.info(); // 输出:This is a Person class.
class Developer extends Person { constructor(name, age, skill) { super(name, age); // 调用父类构造函数 this.skill = skill; } // 重写父类方法 greet() { console.log(`I'm ${this.name}, a ${this.skill} developer!`); } } const bob = new Developer("Bob", 30, "JavaScript"); bob.greet(); // 输出:I'm Bob, a JavaScript developer!
class BankAccount { #balance; // 私有字段(ES2025支持) constructor(initial) { this.#balance = initial; } // 通过getter/setter控制访问 get balance() { return this.#balance; } deposit(amount) { if (amount > 0) this.#balance += amount; } } const account = new BankAccount(1000); account.deposit(500); console.log(account.balance); // 1500 // account.#balance; // 报错:无法直接访问私有字段
关键字 | 作用域 | 变量提升 | 重复声明 | 适用场景 |
---|---|---|---|---|
var |
函数级 | 传统代码或需要提升的场景 | ||
let |
块级({}内) | 循环、条件语句等块级作用域 | ||
const |
块级 | 常量、不可变对象引用 |
示例:
function test() { var a = 1; // 函数级作用域 let b = 2; // 块级作用域 if (true) { var a = 3; // 覆盖外层变量(var的陷阱!) let b = 4; // 独立作用域 console.log(a, b); // 3, 4 } console.log(a, b); // 3, 2(var的变量提升导致) }
const user = { name: "Charlie", age: 28, email: "charlie@example.com" }; // 基础用法 const { name, age } = user; console.log(name, age); // Charlie, 28 // 重命名与默认值 const { email: mail, address = "Unknown" } = user; console.log(mail, address); // charlie@example.com, Unknown // 嵌套解构 const { address: { city } } = user; // 假设user有address对象
const numbers = [1, 2, 3]; const [first, , third] = numbers; // 跳过第二个元素 console.log(first, third); // 1, 3 // 交换变量(无需临时变量!) let x = 10, y = 20; [x, y] = [y, x]; console.log(x, y); // 20, 10
function connect({ host = "localhost", port = 3000 }) { console.log(`Connecting to ${host}:${port}`); } connect({ port: 8080 }); // 输出:Connecting to localhost:8080
// 传统嵌套调用 const result = processData(transform(validate(input))); // 管道操作符(ES2025) const result = input |> validate(%) |> transform(%) |> processData(%);
const handleResponse = (response) => match(response) { when { status: 200, data } => processData(data), when { status: 404 } => showError("Not Found"), when { status: 500 } => retry(3), default => log("Unknown error") };
// 深度不可变对象(ES2025) const config = #{ env: "production", api: #{ baseURL: "https://api.example.com" } }; // 尝试修改会报错 config.env = "staging"; // 报错:无法修改不可变对象
class
语法,利用extends
实现继承,私有字段保护数据安全。const
(避免意外修改)。let
(解决闭包问题)。var
(除非需要函数级作用域)。立即行动! 🚀 用这些技巧重构你的代码,让JavaScript写得又快又好!✨
本文由 业务大全 于2025-08-22发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://xdh.7tqx.com/wenda/690941.html
发表评论