当前位置:首页 > 技术 > 正文内容

现代 JavaScript ES6 核心语法指南

访客 技术 2026年10月1日 8

变量声明与作用域管理

在 ECMAScript 2015 之前,开发者主要依赖 var 进行变量声明,但这容易导致作用域污染和变量提升问题。现代开发中推荐使用 let 和 const 来增强代码的可读性与安全性。

// 传统 var 存在函数级作用域与变量提升现象
function legacyScope() {
  console.log(id); // undefined (未报错但值为空)
  var id = 100;
}

// let 提供块级作用域,避免外部访问
function modernScope() {
  if (true) {
    let secretKey = "auth_token_123";
  }
  // console.log(secretKey); // ReferenceError: secretKey is not defined
}

// const 定义常量,绑定后不可重新赋值
const MAX_RETRY_COUNT = 3;
// MAX_RETRY_COUNT = 5; // TypeError: Assignment to constant variable.

let dynamicConfig = {};
dynamicConfig.theme = "dark"; // 对象属性修改是被允许的

模板字符串的应用

模板字符串(Template Literals)允许使用反引号(`)定义多行字符串,并直接嵌入表达式。相比传统的字符串拼接方式,它显著减少了语法噪音并提高了可维护性。

<div id="userProfile">
  
</div>
<script>
  const currentUser = {
    name: "张三",
    level: "Senior Developer"
  };

  const container = document.getElementById('userProfile');
  
  // 利用模板字符串直接嵌入对象属性
  container.innerHTML = `
    <section class="profile-card">
      <h3>${currentUser.name}</h3>
      <p>职称:${currentUser.level}</p>
      <ul>
        <li>前端架构设计</li>
        <li>性能优化实战</li>
        <li>团队技术分享</li>
      </ul>
    </section>
  `;
</script></div>

箭头函数与上下文指向

箭头函数提供了一种更简洁的函数书写形式,且拥有独特的 this 绑定机制。不同于普通函数依赖于调用上下文,箭头函数的 this 始终指向定义时所在的词法环境。

// 普通函数 this 指向调用者
const dataManager = {
  id: 42,
  printInfo: function() {
    console.log(this.id); // 42
  }
};

// 在定时器或回调中使用普通函数会丢失 this 上下文
dataManager.printInfo(); 
setTimeout(function() {
  // console.log(this.id); // undefined (在严格模式下)
}, 100);

// 箭头函数继承外层 this
const fetchData = () => {
  setTimeout(() => {
    console.log(this.id); // 如果在全局或特定类方法内,保持原 this 指向
  }, 100);
};

// 简短写法示例
const add = (a, b) => a + b;
console.log(add(10, 20)); // 30

解构赋值简化数据提取

解构赋值是一种强大的语法糖,可以从数组或对象中快速提取需要的值,避免了繁琐的属性链访问,常用于 API 响应数据处理。

// 对象解构
const serverConfig = {
  host: 'api.example.com',
  port: 8080,
  protocol: 'https',
  timeout: 5000
};

const { host, protocol, timeout } = serverConfig;
// 等同于单独获取 host = serverConfig.host...
console.log(`连接地址:${protocol}://${host}:${port || '默认端口'}`);

// 数组解构
const colorPalette = ['#FF5733', '#33FF57', '#3357FF'];
const [primary, secondary, accent] = colorPalette;

// 带有默认值的解构
const { username = "Guest", role } = { username: undefined, role: "Admin" };
console.log(username); // Guest

面向对象编程:Class 与继承

ES6 引入了类的概念,使 JavaScript 更接近传统面向对象语言。通过 extends 关键字实现继承,使用 super 调用父类构造器。

class ElectronicDevice {
  constructor(manufacturer) {
    this.manufacturer = manufacturer;
    this.isPowerOn = false;
  }

  turnOn() {
    this.isPowerOn = true;
    console.log(`${this.manufacturer} 设备已开启`);
  }
}

// 子类继承父类
class SmartPhone extends ElectronicDevice {
  constructor(manufacturer, screenSize) {
    super(manufacturer); // 必须先调用 super
    this.screenSize = screenSize;
  }

  turnOn() {
    super.turnOn();
    console.log(`屏幕尺寸:${this.screenSize}英寸`);
  }
}

const phone = new SmartPhone("TechCorp", 6.7);
phone.turnOn();
/* 
输出:
TechCorp 设备已开启
屏幕尺寸:6.7 英寸
*/

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。