Ashun's 技術駅 Ashun's 技術駅
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • HTML
  • CSS
  • Vue
  • 现代web布局
  • React
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 技术资源
  • 第一阶段

    • HTML
  • 第二阶段

    • JavaScript
  • 第三阶段

    • Vue
  • 第四阶段

    • 实战项目
  • 每周测试

    • 每周
  • 其他

    • Vue引入UI框架
    • Web前端面试
    • Vue3-resource
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 福利资源
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Ashun

前端界的小学生
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • HTML
  • CSS
  • Vue
  • 现代web布局
  • React
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 技术资源
  • 第一阶段

    • HTML
  • 第二阶段

    • JavaScript
  • 第三阶段

    • Vue
  • 第四阶段

    • 实战项目
  • 每周测试

    • 每周
  • 其他

    • Vue引入UI框架
    • Web前端面试
    • Vue3-resource
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 福利资源
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 01变量-es6
  • 02常量-es6
  • 03解构赋值-es6
    • 一、使用解构赋值
    • 二、数组解构赋值
    • 三、对象解构
  • 04字符串拓展-es6
  • 05数字拓展-es6
  • 06数组拓展-es6
  • 07函数拓展-es6
  • 08对象拓展-es6
  • 09类拓展-es6
  • 10扩展运算符-es6
  • 11set数据结构-es6
  • 12map数据结构-es6
  • 13同步和异步-es6
  • 《es6》
ashun
2022-02-14
目录

03解构赋值-es6

# 解构赋值

# 一、使用解构赋值

function fn(){
  let a = 1
  let b =  2
  return {
    a,b
  }
}

//没有解构赋值
let obj = fn()
console.log(obj.a)
console.log(obj.b)

//使用了解构赋值
let {a,b} = fn()
console.log(a)
console.log(b)

//等同于下面的代码,在es6里面,对象的key和value相同时,可以省略后面的冒号和value
let {a:a,b:b} = fn()
console.log(a)
console.log(b)

//结构赋值命名
let {a:x,b:y} = fn()
console.log(x)
console.log(y)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

[!cogs]

%accordion% es5与es6写法 %accordion%

//es5
var obj = {
    name: "张三",
    age: 18
}
console.log(obj.name); //张三
console.log(obj.age); //18

//es6
let {
    name,
    age
} = {
    name: "张三",
    age: 18
};
console.log(name); //张三
console.log(age); //18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

%/accordion%

# 二、数组解构赋值

//数组解构
let [a,b,c] = [1,2,3,4,5]
console.log(a)
console.log(b)
console.log(c)

//默认值
let [a=1,b,c] = ["x",2,3,4,5]
console.log(a)
console.log(b)
console.log(c)

//克隆
let a = [1,2,3,4,5]
// let b = Object.assign([],a) 浅克隆
// let b = JSON.parse(JSON.stringify(a)) 深克隆
let b = [...a]//es6
b.push(6)
console.log(a)//[1,2,3,4,5]
console.log(b)//[1,2,3,4,5,6]

let [b,c,d] = [...a]//es6
console.log(b)//1
console.log(c)//2
console.log(d)//3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

[!cogs]

%accordion% 数组解构赋值 %accordion%

let [a, b, c] = ["张三", "李四", "老王"]
console.log(a); //张三
console.log(b); //李四
console.log(c); //老王
1
2
3
4

%/accordion%

%accordion% 默认 %accordion%

let [a, b, c = "张三"] = ["李四", "老王", "赵四"]
console.log(a); //李四
console.log(b); //老王
console.log(c); //赵四
1
2
3
4

%/accordion%

%accordion% 浅克隆 %accordion%

let a = [1, 2, 3]
let b = [...a]
console.log(b);//[1, 2, 3]

let a = [1, 2, 3]
let b = [...a]
b[0] = 'x'
console.log(b);//["x", 2, 3]
1
2
3
4
5
6
7
8
let a = [
    {
        name: "张三",
        obj: {
            name: "李四"
        }
    }
]
let b = [...a]
b[0].obj.name = "老王"
console.log(a);//{name: "张三", obj: {…}}
console.log(b);//{name: "张三", obj: {…}}


let a = [1, 2, 3]
let b = a
b[0] = "x"
console.log(a);//["x", 2, 3]
console.log(b);//["x", 2, 3]


let a = [1, 2, 3]
let b = [...a]
b[0] = "x"
console.log(a); //[1, 2, 3]
console.log(b); //["x", 2, 3]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

%/accordion%

# 三、对象解构

//对象解构
let {name,age} = {name:"swr",age:28}
console.log(name) // 'swr'
console.log(age) // 28

//对象解构-命名
let { name:Name,age } = { name:'swr',age:28 }
console.log(Name) // 'swr'
console.log(age) // 28

//默认值
let {name="swr",age} = {age:28}
console.log(name) // 'swr'
console.log(age) // 28

//解构函数参数
function fn({name,age}){
  console.log(name)
  console.log(age)
}
fn({name:"小明",age:18})

//数组对象解构
let [,{name}] = [{name:'小明',age:18},{name:'小红',age:19}]
console.log(name)//小红
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

[!cogs]

%accordion% 对象解构%accordion%

//对象解构-命名
let {
    name: a
} = {
    name: "张三"
}
console.log(a); //张三

let {
    name,
    age = 18
} = {
    name: "张三",
    age: 19
}
console.log(age); //19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

%/accordion%

%accordion% 解构函数参数 %accordion%

function fn({
    name,
    age
}) {
    console.log(name); //张三
    console.log(age); //18
}
fn({
    name: "张三",
    age: 18
})
1
2
3
4
5
6
7
8
9
10
11

%/accordion%

%accordion% 解构函数参数 %accordion%

//打印第一个
let [{ name, age }] = [{ name: '张三', age: 18 }, { name: '李四', age: 19 }]
console.log(name)//张三
console.log(age)//18


//打印第二个
let [, {
    name,
    age
}] = [{
    name: '张三',
    age: 18
}, {
    name: '李四',
    age: 19
}]
console.log(name) //李四
console.log(age) //19


//打印二个
let [{
    name: aName,
    age: aAge
}, {
    name: bName,
    age: bAge
}] = [{
    name: '张三',
    age: 18
}, {
    name: '李四',
    age: 19
}]
console.log(aName) //张三
console.log(aAge) //18
console.log(bName) //李四
console.log(bAge) //19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

%/accordion%

编辑 (opens new window)
上次更新: 2022/04/24, 13:33:34
02常量-es6
04字符串拓展-es6

← 02常量-es6 04字符串拓展-es6→

最近更新
01
课件-react路由-V6
01-22
02
课件-国际化
01-22
03
课件-redux-toolkit
01-22
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式