您现在的位置是:首页 > Javascript
当前栏目
[你必须知道的JavaScript]解构赋值
2023-02-18 16:43:13 时间
概念
解构赋值语法是一种 Javascript 表达式。通过解构赋值, 可以将 属性/值 从 对象/数组中 取出,赋值给其他变量。
数组解构
let [a,b]=[1,2]
// a = 1
// b = 2
在react中经常用于const [value,setValue]=useState('')
。
将剩余数组赋值给一个变量
当解构一个数组时,可以使用剩余模式,将数组剩余部分赋值给一个变量。
var [a, ...b] = [1, 2, 3];
// a = 1
// b = [2, 3]
解构默认值
如果解构取出的值是undefined
,可以设置默认值:
let a, b;
// 设置默认值
[a = 9, b = 7] = [1, 2];
// a = 9
// b = 7
交换变量
在一个解构表达式中可以交换两个变量的值。
没有解构赋值的情况下,交换两个变量需要一个临时变量(或者用低级语言中的XOR-swap技巧)。
var a = 1;
var b = 3;
[a, b] = [b, a];
// a = 3
// b = 1
忽略某些返回值
你也可以忽略你不感兴趣的返回值:
function f() {
return [1, 2, 3];
}
var [a, , b] = f();
// a = 1
// b = 3
甚至可以忽略全部:
[,,] = f();
解构对象
重命名且赋默认值
const { a:k = 2 } = { a: 1 }
// k = 1
const { a:k = 2 } = { a: null }
// k = null
const { a: k = 2 } = { a: undefined }
// k = 2
上面那么仔细,下面简单点:
嵌套对象和数组解构
//
const metadata = {
title: 'Scratchpad',
translations: [
{
locale: 'de',
localization_tags: [],
last_edit: '2014-04-14T08:43:37',
url: '/de/docs/Tools/Scratchpad',
title: 'JavaScript-Umgebung'
}
],
url: '/en-US/docs/Tools/Scratchpad'
};
let {
title: englishTitle, // rename
translations: [
{
title: localeTitle, // rename
},
],
} = metadata;
console.log(englishTitle); // "Scratchpad"
console.log(localeTitle); // "JavaScript-Umgebung"
对象属性名解构
let key = "z";
let { [key]: foo } = { z: "bar" };
console.log(foo); // "bar"
无效的 JavaScript 标识符作为属性名称
通过提供有效的替代标识符,解构可以与不是有效的JavaScript标识符的属性名称一起使用。
const foo = { 'fizz-buzz': true };
const { 'fizz-buzz': fizzBuzz } = foo;
// 以下写法,js语法会报错,所以用上面的
// const { fizz-buzz: fizzBuzz } = foo;
console.log(fizzBuzz); // true
参考文章:
相关文章
- JDK中内嵌JS引擎介绍及使用
- 49195,npm最后的疯狂?盘点10款最有前途JavaScript构建工具
- 译文:5个增强Node.js应用程序增强功能
- 4个例子,吃透 JavaScript 实现的二叉搜索树 BST
- Vue中使用XML和JSON格式互转插件
- JDK中Jshell简单使用(JDK9版本以上或者JDK9版本)
- shiro中的JSP标签支持
- Java技术点-json转对象,对象转json
- SpringBoot+SpringDataJpa @Query之 JPQL使用书写模板(模糊查询and条件查询)
- Spring Boot中的Freemarker模版引擎引用css和js的正确姿势
- Node.js解压版的环境配置及相关常用命令
- JSP学习笔记(6)—— 自定义MVC框架
- JSP学习笔记(5)——Servlet、监听器、过滤器、MVC模式介绍
- Jsp学习笔记(4)——分页查询
- APIJSON简单使用
- JSP学习笔记(3)——JSTL 标签库
- JSP学习笔记(1)——Jsp指令、动作元素和内置对象
- JavaScript ES6 Promise对象
- Web前端——JavaScript扩展补充
- Web前端——表单提交和Js添加选项