es6新特性功能介绍(二)

es6新特性功能介绍(二) ES6 进阶核心特性对象函数简化 箭头函数 参数默认值 rest 参数实战全解摘要本文深度讲解 ES6 四大进阶高频特性对象与函数简化写法、箭头函数、函数参数默认值、rest 剩余参数从语法规则、核心特性、代码实战、避坑指南四大维度全面解析配套可直接运行的示例代码覆盖前端开发 90% 常用场景帮助开发者快速落地 ES6 进阶语法写出简洁、高效、规范的现代 JavaScript 代码。一、ES6 对象与函数简化写法1.1 核心语法ES6 允许在对象大括号{}内直接写入变量名作为对象属性、直接书写函数作为对象方法省略冗余的属性名:属性值和function关键字代码更简洁直观。1.2 代码实战演示javascript运行// 定义独立变量和函数 let name 大喇叭; let change function () { console.log(活着就是为了改变世界); }; // 创建对象ES6简化写法 const school { // 变量直接作为属性等价于 name: name name, // 函数直接作为方法等价于 change: change change, // 对象方法简化省略 function 关键字 say() { console.log(言行一致); }, }; // 调用测试 school.change(); // 活着就是为了改变世界 school.say(); // 言行一致1.3 核心优势省略重复的属性名和值减少代码冗余对象方法书写更简洁符合现代开发习惯不改变原有功能纯语法糖兼容性与可读性拉满。1.4 应用场景定义对象、封装模块、组件配置项时优先使用是前端开发必备简化语法。二、箭头函数ES6 最常用函数语法糖2.1 核心概念箭头函数() {}是 ES6 提供的简洁函数定义方式主要用于匿名函数大幅简化函数书写同时具备固定的this指向规则。2.2 核心特性必背应用场景注意这些特性使得箭头函数特别适合非方法的函数但不适合需要动态 this 或作为构造函数的方法定义。箭头函数是 ES6 引入的一种简洁的函数语法具有以下重要特性形参省略规则当只有一个形参时可以省略参数的小括号示例x x * 2等同于(x) { return x * 2 }无参数或多个参数时仍需保留小括号如() console.log(hi)或(a,b) a b函数体简写当函数体只有一条语句时可以省略花括号该语句会被自动作为返回值无需写 return示例numbers.map(n n * 2)若要返回对象字面量需用括号包裹() ({ name: John })this 绑定特性箭头函数的 this 是词法作用域的 this定义时的 this不会因调用方式改变call/apply/bind 也无法修改示例const obj { value: 1, regular: function() { console.log(this.value) }, // 动态 this arrow: () console.log(this.value) // 静态 this指向外层 }构造限制不能用作构造函数使用 new 调用会抛出错误示例const Foo () {}; new Foo()会报错因为没有自己的 prototype 属性arguments 对象没有自己的 arguments 对象会继承外层函数的 arguments如果存在替代方案使用剩余参数语法(...args) console.log(args)数组方法回调[1,2,3].map(x x * 2)需要保持 this 一致的场景如事件处理函数简单的单行函数逻辑2.3 基础语法对比传统 vs 箭头函数javascript运行// 1. 无参数 let speak () console.log(hello 哈哈); speak(); // 2. 一个参数小括号可省略 let hi name hi name; console.log(hi(大喇叭)); // 3. 多个参数 let he (a, b, c) a b c; console.log(he(1, 2, 3)); // 62.4 this 指向特性重点箭头函数的this是静态的声明后永久不变不受call/apply/bind影响javascript运行const school { name: 大哥 }; window.name 大喇叭; // 普通函数this会变 function getName() { console.log(getName this.name); } // 箭头函数this永远指向声明时的作用域这里是window let getName1 () console.log(getName1 this.name); // 直接调用 getName(); // 大喇叭 getName1(); // 大喇叭 // call修改this getName.call(school); // 大哥生效 getName1.call(school); // 大喇叭不生效2.5 两大禁用场景javascript运行// 1. 不能作为构造函数报错不是构造器 // let Person (name) { this.name name }; // new Person(测试); // 2. 不能使用 arguments报错未定义 // let fn () console.log(arguments); // fn(1,2,3);2.6 应用场景定时器、数组遍历方法、回调函数优先使用箭头函数需要动态this时用普通函数。三、ES6 函数参数默认值3.1 核心语法ES6 允许直接给函数形参赋初始值调用时不传参自动使用默认值替代传统||赋值写法。3.2 语法规则直接写function fn(a 10){}带默认值的参数建议放在参数列表最后行业潜规则支持与对象解构赋值结合使用。3.3 代码实战演示javascript运行// 1. 基础默认值写法 function add2(a, b, c 10) { return a b c; } console.log(add2(1, 2)); // 121013 // 2. 与对象解构赋值结合高频实战 function connect({ host 127.0.0.1, // 设置默认值 username, password, port, }) { console.log(host); // 127.0.0.1 console.log(username); // root console.log(password); // root console.log(port); // 3306 } // 调用时只传必填参数 connect({ username: root, password: root, port: 3306, });3.4 应用场景函数可选参数、配置项参数、接口请求参数大幅简化参数判断逻辑。四、ES6 rest 参数替代 arguments 的优雅方案4.1 核心概念rest 参数用...参数名定义用于获取函数所有实参返回一个真数组完美替代不灵活的arguments伪数组。4.2 语法规则格式function fn(...args){}args是标准数组可直接使用map/filter/forEachrest 参数必须放在所有形参最后。4.3 代码实战演示javascript运行// ES5arguments 是伪数组不能直接用数组方法 function data() { console.log(arguments); // 伪数组 } data(大哥, 二哥, 三哥); // ES6rest参数 ...args 是真数组 function data(...args) { console.log(args); // [大哥, 二哥, 三哥] // 可直接使用数组方法 args.forEach(item console.log(item)); } data(大哥, 二哥, 三哥, 四哥);4.4 核心优势真数组操作更方便语义清晰可读性远胜arguments支持与普通参数搭配使用。4.5 应用场景参数数量不固定、需要遍历实参、封装工具函数时完全替代arguments。五、ES6 进阶特性开发规范总结对象函数简化定义对象直接写变量名、方法省略function简洁高效箭头函数回调函数优先用注意this静态指向不做构造器、不用arguments参数默认值可选参数直接赋值默认值靠后支持解构赋值rest 参数获取不定参用...args真数组更易用替代arguments。以上四大特性是 ES6 进阶核心熟练使用可让代码精简 30% 以上是前端工程师必须掌握的基础技能。