es6知识点1-自备使用

一、ES6 实战语法总体地图

平时写 Vue / JavaScript,ES6 最值得掌握的大概是这些

  1. letconst:变量声明
  2. 模板字符串:${}
  3. 解构赋值:对象、数组快速取值
  4. 箭头函数:() => {}
  5. 对象增强写法:属性简写、方法简写
  6. 展开运算符:...
  7. 剩余参数:...args
  8. 函数默认参数
  9. 数组常用方法:map / filter / find / some / every
  10. Promise
  11. async / await
  12. class
  13. 模块化:import / export
  14. 可选链:?.
  15. 空值合并:??
  16. Set / Map

其中真正日常使用频率特别高的是:

1~11 + 13~15。


1. letconst

这是 ES6 最基础的变化。

以前 JavaScript 经常使用:

js 复制代码
var name = '张三'

ES6 以后主要使用:

js 复制代码
let name = '张三'

const age = 20

可以先简单理解:

text 复制代码
let   = 这个变量以后还可能重新赋值
const = 这个变量以后不准备重新赋值

let

例如分页:

js 复制代码
let pageNum = 1

pageNum = 2
pageNum = 3

这是正常的。

因为 pageNum 后面会发生变化。


const

例如:

js 复制代码
const baseUrl = '/api'

baseUrl = '/test'

这样会报错。

因为 const 不允许重新赋值。

所以实际项目里,经常会看到:

js 复制代码
const response = await getUserInfo()

const data = response.data

const userId = data.userId

这些变量拿到以后不会重新赋值,所以用 const


一个很重要的误区

很多人以为:

const 声明的对象不能修改。

这是错的。

比如:

js 复制代码
const user = {
  name: '张三',
  age: 20
}

user.age = 21

console.log(user)

结果:

js 复制代码
{
  name: '张三',
  age: 21
}

完全没问题。

因为 const 限制的是:

变量不能指向另外一个对象。

不能这样:

js 复制代码
const user = {
  name: '张三'
}

user = {
  name: '李四'
}

这才会报错。


实战建议

JavaScript 项目里可以遵循:

text 复制代码
默认 const
需要重新赋值的时候才 let
基本不要 var

比如:

js 复制代码
const userId = 1001
const userName = '张三'

let pageNum = 1
let total = 0

2. 模板字符串 ${}

以前 JavaScript 拼字符串很烦:

js 复制代码
const name = '张三'
const age = 20

const text = '姓名:' + name + ',年龄:' + age

ES6 可以直接:

js 复制代码
const name = '张三'
const age = 20

const text = `姓名:${name},年龄:${age}`

注意这里不是普通单引号:

js 复制代码
''

而是反引号:

js 复制代码
``

${} 里面可以直接写表达式

js 复制代码
const price = 100
const count = 3

console.log(`总金额:${price * count}`)

输出:

text 复制代码
总金额:300

也可以:

js 复制代码
const user = {
  name: '张三',
  age: 20
}

console.log(`用户:${user.name},明年${user.age + 1}岁`)

实战场景 1:拼 URL

以前:

js 复制代码
const url = '/user/detail?id=' + userId

现在:

js 复制代码
const url = `/user/detail?id=${userId}`

在 Vue 里面经常会遇到:

js 复制代码
export function getOrder(orderId) {
  return request({
    url: `/xxx/order/${orderId}`,
    method: 'get'
  })
}

这里:

js 复制代码
`/xxx/order/${orderId}`

假设:

js 复制代码
orderId = 100

最终就是:

text 复制代码
/repair/order/100

实战场景 2:提示信息

js 复制代码
const orderNo = 'WX140001'

this.$message.success(`xxxx ${orderNo} 创建成功`)

比:

js 复制代码
this.$message.success('xxx ' + orderNo + ' 创建成功')

清楚很多。


3. 解构赋值

这个非常重要。

Vue、Axios、前端项目里到处都是。

假设后端返回:

js 复制代码
const user = {
  id: 1001,
  name: '张三',
  age: 25
}

以前取数据:

js 复制代码
const id = user.id
const name = user.name
const age = user.age

ES6 可以写:

js 复制代码
const { id, name, age } = user

这叫:

对象解构。

相当于自动执行:

js 复制代码
const id = user.id
const name = user.name
const age = user.age

实战例子

Axios 返回:

js 复制代码
const response = {
  code: 200,
  msg: 'success',
  data: {
    id: 1001,
    name: '张三'
  }
}

可以:

js 复制代码
const { code, msg, data } = response

console.log(code)
console.log(msg)
console.log(data)

甚至继续解构:

js 复制代码
const { id, name } = response.data

console.log(id)
console.log(name)

修改变量名称

比如后端返回:

js 复制代码
const user = {
  name: '张三'
}

你不想叫 name,可以:

js 复制代码
const { name: userName } = user

console.log(userName)

注意:

js 复制代码
name: userName

意思不是:

text 复制代码
把 userName 给 name

而是:

text 复制代码
取出 user.name
然后保存到变量 userName

这个第一次看非常容易反。


设置默认值

比如:

js 复制代码
const user = {
  name: '张三'
}

const { name, age = 18 } = user

因为没有 age

js 复制代码
console.log(age)

结果:

text 复制代码
18

实际项目里很有用:

js 复制代码
const {
  pageNum = 1,
  pageSize = 10
} = params

数组也可以解构

例如:

js 复制代码
const arr = ['Java', 'Vue', 'MySQL']

const [a, b, c] = arr

console.log(a) // Java
console.log(b) // Vue
console.log(c) // MySQL

实际更常见的是:

js 复制代码
const [first, second] = arr

例如有一段:

js 复制代码
const response = await getUserInfo()

const { id, name, age } = response.data

const message = `用户 ${name},ID=${id},年龄=${age}`

console.log(message)

这里其实连续用了三个 ES6 知识:

text 复制代码
① const
   ↓
const response = ...

② 解构赋值
   ↓
const { id, name, age } = response.data

③ 模板字符串
   ↓
`用户 ${name},ID=${id}`

你可以先把这一阶段记成:

text 复制代码
1. let / const
   管变量

2. 模板字符串
   管字符串拼接

3. 解构赋值
   管对象/数组取值

这三个都属于看 ES6 代码之前必须熟悉的基础语法

这三个开始就会大量对应你现在 Vue / Axios 项目里的真实代码。

相关推荐
小爬的老粉丝2 小时前
JavaScript 纯前端预览 WPS:先识别容器,再路由解析器
前端·javascript·wps
计算机魔术师2 小时前
新兴多智能体系统的模式与问题
前端
用户059540174463 小时前
AI Agent 上下文污染踩坑实录:用 pytest + Redis 揪出 3 类记忆串号 bug,排查 6 小时
前端·css
满栀5853 小时前
状态管理:Redux、Vuex、Pinia 核心区别
前端·javascript·typescript
一拳不是超人4 小时前
DeepSeek Harness 为什么敢说"一切皆插件"?拆透 Cordis 引擎的五大核心机制
前端·人工智能·agent
IT_陈寒4 小时前
Python的GIL让我多写了500行代码
前端·人工智能·后端
风骏时光牛马4 小时前
AI智能体能力调度微服务
前端
Eloudy6 小时前
ReAct 原理简介
前端·javascript·人工智能·react.js·agent·gpu
ZJU_统一阿萨姆7 小时前
【DSH】如何将 DeepSeek Harness 嵌入生产环境?万字解构 DeepSeek Agent Harness 的运行机制与安全边界
前端·javascript·安全