ES6 新特性大揭秘:让你的代码起飞啦!

241 阅读1分钟

一、字符串模板:告别笨拙拼接的魔法咒语

1.1 传统拼接 VS 模板字符串:谁更优雅?

以前拼接字符串像搭积木,得用+号左拼右凑:

// 传统写法:像拼乐高一样麻烦😣
const name = '旺财';
const age = 2;
const sentence = 'My dog ' + name + ' is ' + (age * 7) + ' years old';
console.log(sentence); // My dog 旺财 is 14 years old

ES6 模板字符串用反引号(`)包裹,变量直接嵌进 ${} 里,像写作文一样自然:

// 模板字符串:一行搞定所有变量插入
const sentence = `My dog ${name} is ${age * 7} years old`;
console.log(sentence); // 同样输出,但代码清爽多啦~

1.2 多行字符串:格式保留大师

传统字符串写多行得加\n换行符,格式还容易乱:

// 传统多行:像打空格俄罗斯方块❌
const html = ' <div>\n  <h1>标题</h1>\n  <p>内容</p>\n</div> ';

模板字符串直接换行写,HTML 结构原汁原味:

// 模板字符串多行:格式完全还原
const html = `
<div>
  <h1>标题</h1>
  <p>内容</p>
</div>
`;
document.body.innerHTML = html; // 直接渲染,格式不跑偏呢~

1.3 表达式嵌入:计算能力藏进字符串

占位符 ${} 里不仅能放变量,还能写任何 JS 表达式:

const price = 99.9;
const discount = 0.8;
// 直接计算折后价+拼接字符串
const msg = `原价${price}元,打${discount*10}折后:${price*discount}元`;
console.log(msg); // 原价99.9元,打8折后:79.92元

二、map 方法:数组变魔术的流水线

2.1 map VS forEach:返回值的秘密武器

  • forEach:遍历数组做事情,但不返回新数组(像扫地机器人,只干活不交货)
  • map:遍历 + 加工元素,返回全新数组(像工厂流水线,输入原料输出成品)

2.2 实战:从数据到 HTML 的丝滑转换

假设有一群朋友的数据,要生成列表 HTML:

const friends = [
  { name: "小欢", hometown: "抚州" },
  { name: "小刘", hometown: "赣州" },
  { name: "小夏", hometown: "南昌" }
];

const ul = document.querySelector('#friends');

// map+箭头函数:一行代码生成HTML数组
ul.innerHTML = friends.map(friend => `
  <li>
    ${friend.name} - <i>${friend.hometown}</i>
  </li>
`).join(''); // 用join把数组转成字符串,塞进ul里~

2.3 业务场景:数据格式化神器

比如后端返回价格是数字,前端要转成 "¥199.00" 格式:

const prices = [199, 29.9, 88];

// map把每个数字转成带符号的字符串
const formattedPrices = prices.map(price => ${price.toFixed(2)}`);
console.log(formattedPrices); // ["¥199.00", "¥29.90", "¥88.00"]

三、代码实战:用 ES6 重构你的日常开发

3.1 字符串模板完整案例

// 场景:生成用户欢迎消息
const user = {
  name: "豆包",
  level: 3,
  points: 1280
};

// 模板字符串里写条件逻辑+表达式
const welcomeMsg = `
  欢迎 ${user.name}!
  你当前是${user.level}级用户,
  距离下一级还需${1500 - user.points}积分~
`;

console.log(welcomeMsg);

3.2 map 进阶:复杂数据转换

假设后端返回商品列表,需要提取名称和价格:

const products = [
  { id: 1, name: "笔记本", price: 4999, stock: 10 },
  { id: 2, name: "耳机", price: 299, stock: 50 },
  { id: 3, name: "键盘", price: 199, stock: 20 }
];

// map提取所需字段,组成新数组
const simpleProducts = products.map(item => ({
  name: item.name,
  price: ${item.price}`,
  isInStock: item.stock > 0 ? '有货' : '缺货'
}));

console.log(simpleProducts);
/* 输出:
[
  { name: "笔记本", price: "¥4999", isInStock: "有货" },
  // 其他项...
]
*/

四、总结:ES6 让代码又快又美

  • 字符串模板:反引号 +${},拼接多行、表达式全搞定,代码像诗一样优雅~

  • map 方法:数组转换的瑞士军刀,比 for 循环更简洁,比 forEach 更强大!

下次写代码时,记得试试这些神器哦~让你的代码既有速度又有风度,成为团队里的编程魔法师吧!