当前位置: 首页 > news >正文

ES6新增了哪些新特性

1.let/const 声明变量(彻底替代 var)

解决var变量提升、没有块级作用域、可重复声明三大问题,是 ES6 最基础也是最必须的特性。

  • let:声明可变的块级作用域变量,不可重复声明,无变量提升(暂时性死区);
  • const:声明不可变的块级作用域常量,必须初始化,不可重复声明,注意:引用类型(对象 / 数组)的内容可修改,只是指向的地址不可变
// var的问题 var a = 1; var a = 2; // 可重复声明,无报错 if (true) { var a = 3; } console.log(a); // 3,无块级作用域,全局覆盖 // let/const的正确用法 let b = 1; // let b = 2; // 报错:Identifier 'b' has already been declared if (true) { let b = 3; console.log(b); } // 3,块级作用域内有效 console.log(b); // 1,不受块内影响 const PI = 3.14; // PI = 3.1415; // 报错:Assignment to constant variable const obj = { name: 'ES6' }; obj.name = 'JavaScript'; // 正常,引用类型内容可修改

2.箭头函数(=>)(简化函数写法)

简化函数定义,同时解决this 指向混乱的问题(箭头函数没有自己的 this,其 this 继承自外层作用域的 this)。

  • 语法(参数) => { 函数体 },单参数可省略(),单行返回可省略{}return
  • 注意:不能作为构造函数(不能 new),没有 arguments 对象,不能用 yield(不能作生成器)。
// 普通函数 vs 箭头函数 const add = function(a, b) { return a + b; }; const add = (a, b) => a + b; // 简化:多参数+单行返回 const fn = a => a * 2; // 单参数省略() const say = () => { console.log('Hello ES6'); }; // 无参数需() // 解决this指向问题(经典场景:定时器/回调函数) const person = { name: 'Tom', sayHi: function() { // 普通函数:this指向调用者person setTimeout(() => { // 箭头函数:this继承自外层sayHi的this,即person console.log(`Hi, I'm ${this.name}`); // Hi, I'm Tom }, 1000); } }; person.sayHi();

使用场景:回调函数(定时器、数组方法、Promise)、简单函数,避免在对象方法、构造函数中使用

3.解构赋值(★★★★★,快速提取数据)

快速从数组 / 对象中提取值,赋值给变量,简化繁琐的取值代码,开发中高频用于接口数据解析、函数参数传值。

  • 数组解构:按顺序提取,支持默认值、剩余参数;
  • 对象解构:按属性名提取,支持重命名、默认值、剩余参数。
// 数组解构 const [a, b, c] = [1, 2, 3]; console.log(a, b, c); // 1 2 3 const [x, , y] = [4, 5, 6]; // 跳过第二个元素 const [m, n = 10] = [7]; // 默认值:n=10 const [first, ...rest] = [1,2,3,4]; // 剩余参数:rest=[2,3,4] // 对象解构(开发高频) const user = { name: 'Alice', age: 20, gender: 'female' }; const { name, age } = user; // 按属性名提取 console.log(name, age); // Alice 20 const { name: uname, gender = 'male' } = user; // 重命名+默认值 const { ...info } = user; // 剩余参数:info={name,age,gender} // 实战场景:接口数据解析 const res = { code: 200, data: { list: [1,2,3], total: 3 }, msg: 'success' }; const { data: { list, total } } = res; // 嵌套解构 c
http://www.cnnetsun.cn/news/848262.html

相关文章:

  • 目前全网唯一的Autosar TLS文章
  • 工作流程管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 我的思维模型 -- 5.工程学篇
  • 基于SpringBoot+Vue的社区养老服务平台管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 基于SpringBoot+Vue的文理医院预约挂号系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • SQL注入知识要点总结
  • YOLO26手势识别项目实战3-石头剪刀布实时检测系统数据集说明(含训练代码、数据集和GUI交互界面)
  • 电容式三点式振荡电路/电感式三点振荡电路
  • BUCK降压电路Multisim电路仿真分析
  • 好用的PC电脑流程图软件无需下载在线绘制流程图模板大全
  • 基于SpringBoot+Vue的spring boot校园商铺管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 企业级医药管理系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 智能球机摄像头自带旋转355度视角
  • 科研人员新工具:gpt-oss-20b-WEBUI助力论文写作与分析
  • 前后端分离spring boot校园商铺管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 3分钟突破付费墙:Bypass Paywalls Clean让优质内容触手可及
  • 显存22GB以内搞定Qwen2.5-7B微调,4090D实测真香
  • Keil添加文件正确方式:针对STM32项目的通俗解释
  • 万物识别-中文镜像工程沉淀:Dockerfile分层构建+缓存优化+CI/CD流水线完备
  • GPEN开源大模型部署教程:适配A10/A100显卡的高效人脸增强方案
  • 无需配置!CV-UNet镜像开箱即用,轻松实现透明背景
  • OFA-large模型镜像深度解析:torch27环境+transformers 4.48.3固化部署实操
  • AutoGen Studio多场景应用:Qwen3-4B-Instruct在IT运维、HR、法务中的Agent实践
  • GTE-Pro行业落地:电力调度规程语义检索,支持‘跳闸’‘断电’‘保护动作’多义召回
  • ChatGLM3-6B开源镜像效果展示:断网状态下连续多轮技术问答实录
  • translategemma-27b-it行业落地:跨境电商平台多语言商品信息自动化生成
  • GTE中文嵌入模型保姆级教程:Dockerfile构建与镜像体积优化
  • Qwen3-TTS-Tokenizer-12Hz入门指南:tokens序列用于语音异常检测案例
  • YOLOv9官方镜像为什么推荐给新手?三大理由
  • Chandra OCR生产环境:Nginx反向代理+HTTPS+JWT认证API安全加固