-
2022-03-26 16:45:32
1,对象的简写
1,可以直接在对象中写变量或者函数成为对象的属性和方法
let a={b:1,c:2}
2,函数还可以直接返回一个对象
function obj(a, b) {
return {a, b};
}obj(1, 2) // {a:1,b:2}
2,对象的解构
let obj={ name:hx, age:18, qq:123456 } let {name,age,qq}=obj console.log(name,age,qq) // hx,18,123456
当{ }里面的属性是对象的属性,就可以直接得到对应的属性值,如果当{ }里面的属性不是对象的属性,那么这样解构得到的就是undefined,如果解构时属性名和对象的属性不一样,可以在解构时起个名字
let obj={ name:hx, age:18, qq:123456 } let {name:myName,age,qq}=obj console.log(myName,age,qq) // hx,18,123456
但是不能重复定义会报错
let name="lsq" let {name,age}=obj console.log(name,age) //会报错
更多相关内容 -
读阮一峰ES6对象解构赋值小细节
2020-02-27 15:04:50最近看阮一峰的ES6发现了个地方有点不懂,理解之后,特意记录下来。 let obj = {}; let arr = []; ({ foo: obj.prop, bar: arr[0] } = {...首先是外面这个括号,我们知道如果提前定义了一个变量,下面再来解构赋值...最近看阮一峰的ES6发现了个地方有点不懂,理解之后,特意记录下来。
let obj = {}; let arr = []; ({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true }); obj // {prop:123} arr // [true]
就是上面这块。
首先是外面这个括号,我们知道如果提前定义了一个变量,下面再来解构赋值就得加上括号而不是下面这样let a; let b; let [a, b] = [1, 2]; // Uncaught SyntaxError: Identifier 'a' has already been declared 报错了
然后是里面的东西,我们读前面的内容之后
const node = { loc: { start: { line: 1, column: 5 } } }; let { loc, loc: { start }, loc: { start: { line }} } = node; line // 1 loc // Object {start: Object} start // Object {line: 1, column: 5}
我们发现,给对象解构赋值的时候, ’ : ’ 冒号表示这个对象是个模式,而不是变量,只有 ’ = '等号或者不加等号才表示变量赋值,比如
let a; let b; ({a, b} = {a: 10, b: 12}) // ({a = 0, b} = {a: undefined, b: 12})
所以
({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true });
这里面跟前面的例子一样,赋值是赋给 obj 的 prop 以及 arr 的第 0 项!
依照一一对应,所以 obj.prop 赋值 123, 而 arr[0] 赋值 true 就是这么来的。
阮一峰的es6地址:https://es6.ruanyifeng.com/#docs/destructuring
end -
es6对象解构赋值重命名及函数解构
2020-11-14 00:01:35// undefined 函数解构 function testdata( contractStatus, option = { auditStatus: '', sendStatus: '', whenContractSubmitAudit: '', flowId: '' } ) { console.log(contractStatus) console.log(option) ...var cc = { te1: 'ni', te2: 'nihao', te3: 'nihaoma', te4: '' }; var { te1 } = cc; var { te1: bb } = cc; var { te2 = '', te3 = 'te3', te4 = 'te4', te5 = '21', te6 } = cc; console.log(te1); //ni console.log(bb); //ni console.log(te2); //nihao console.log(te3); //nihaoma console.log(te4); // "" console.log(te5); // "" console.log(te6); // undefined
函数解构
function testdata( contractStatus, option = { auditStatus: '', sendStatus: '', whenContractSubmitAudit: '', flowId: '' } ) { console.log(contractStatus) console.log(option) console.log(option.whenContractSubmitAudit) console.log(option.sendStatus) const { sendStatus = '', whenContractSubmitAudit = AUDIT_BEFORE_PURCHASE_SEND } = option; } testdata(); // undefined // { // auditStatus: '', // sendStatus: '', // whenContractSubmitAudit: '', // flowId: '' // } // "" // "" console.log("--------------") testdata(22, { auditStatus:"11", whenContractSubmitAudit:"33" } ); // 22 // { auditStatus: '11', whenContractSubmitAudit: '33' } // 33 // undefined
-
ES6对象解构赋值
2019-07-07 13:54:231.先用let声明一个变量: let node ={ ...2.然后解构赋值 let {type,name} = node {type, name} // {type: "inde", name: "cao"} 3.对type,name重新赋值 {type, name} = {type: '1111', name: 'li'}...1.先用let声明一个变量:
let node ={ type: 'inde', name: 'cao' };
2.然后解构赋值
let {type,name} = node {type, name} // {type: "inde", name: "cao"}
3.对type,name重新赋值
{type, name} = {type: '1111', name: 'li'} // {type: "1111", name: "li"} type //"1111" type = 222 //222 type //222
4.注意在 使用
let {type,name} = node
或者var {type,name} = node
或者const时等号右边必须有值,也就是必需在声明时就做初始化(数组的解构赋值也是一样的)。
5. 但是如果在先声明了type或者name变量,在使用解构赋值就会报错let node ={ type: 'inde', name: 'cao' }, type = '111111', name = 'li'; type //"111111" let {type,name} = node /* 报错 VM106:1 Uncaught SyntaxError: Identifier 'type' has already been declared * at <anonymous>:1:1 *(anonymous) @ VM106:1 */ {type,name} = node //报错 VM113:1 Uncaught SyntaxError: Unexpected token =
可以用表达式来赋值
({type,name} = node) //{type: "inde", name: "cao"}
总结:
1.如果对已经使用let、var、const声明的变量,再使用对象的解构赋值时,需要使用表达式,不能直接使用{type,name} = node
或者let {type,name} = node
。
2.对使用对象解构赋值过的变量,可以再次直接只用对象解构赋值,不需要在使用let、varlet node ={ type: 'inde', name: 'cao' } let {type,name} = node {type, name} //{type: "inde", name: "cao"} {type, name} = {type: '1111', name: 'li'} //{type: "1111", name: "li"} type //"1111" type = 222 //222 ```
-
ES6——解构赋值与对象简化
2022-03-30 17:16:161.对对象解构 2.对数组解构 二.对象简化写法 一.解构赋值 1.对对象解构 解构赋值其实是对赋值运算符的一种扩展,它主要针对数组和对象来进行操作。更加的简介方便 例如我们现在有一个对象,我们想要把当前对象... -
es6+ 解构赋值语法规范(四):数组解构赋值、对象解构赋值、解构赋值在函数传参中的应用
2021-07-08 13:09:441.3 循环体1.4 可以跳过赋值元素1.5 rest 参数1.6 默认值1.7 字符串解构赋值二、对象解构赋值2.1 基本用法2.2 默认值2.3 rest 运算符2.4 嵌套对象三、解构赋值在函数传参中应用 解构赋值 Desctructuring 在 ES6 中... -
ES6 对象解构赋值
2021-10-18 19:23:05解构赋值是对赋值运算符的扩展。 他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。 在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。 解构模型 在解构中,有下面... -
ES6的解构赋值实例详解
2020-10-17 01:48:01解构赋值允许你使用类似数组或对象字面量的语法将数组和对象的属性赋给各种变量。这篇文章主要介绍了ES6的解构赋值的实例代码 ,需要的朋友可以参考下 -
js ES6之解构赋值
2020-07-15 08:06:18目录 解构赋值 1、数组的解构赋值 (1)、基本的数组解构赋值 (2)、 嵌套的数组解构赋值 (3)、带默认值的数组解构赋值 ...(4)、数组的剩余运算解构赋值 ...(5)、Set 结构使用数组的...(7)、对象解构赋值独.. -
ES6数组与对象的解构赋值详解
2020-10-16 20:05:50主要介绍了ES6数组与对象的解构赋值,结合实例形式详细分析了ES6中数组与对象的解构赋值原理、用法及相关操作注意事项,需要的朋友可以参考下 -
JavaScript ES6 - 解构赋值
2021-12-30 22:36:50ES6 语法: 解构赋值 本文主要讲解 ‘解构赋值’ 相关内容, 从两个方面入手: 1. 什么是结构赋值; 2. 解构赋值的分类 。 如图所示: 1. 什么是 ES6 解构赋值 1. ES6 入门标准一书中的定义是: 允许按照一定的模式从数组... -
ES6基础之解构赋值(destructuring assignment)
2020-12-01 14:35:52解构赋值是一种表达式,允许您使用数组或对象,将可迭代对象的值或属性分配给变量。解构赋值能让我们用更简短的语法进行多个变量的赋值,大大的减少了代码量。解构表达式有两种:array和object。 今天的文章笔者将从... -
ES6——解构赋值和剩余参数
2021-09-23 08:11:30解构赋值是对赋值运算符的扩展。 他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。 在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。 以前的写法: let obj = {... -
ES6 数组对象解构赋值 其他类型的解构赋值
2021-06-03 19:52:10ES6 数组对象解构赋值 其他类型的解构赋值 -
ES6 对象的新功能与解构赋值介绍
2020-12-12 09:45:52ES6 通过字面量语法扩展、新增方法、改进原型等多种方式加强对象的使用,并通过解构简化对象的数据提取过程。 一、字面量语法扩展 在 ES6 模式下使用字面量创建对象更加简洁,对于对象属性来说,属性初始值可以... -
ES6 连续解构赋值,多层对象嵌套
2022-02-28 13:41:36连续解构赋值: let obj = {a:{b:{c:0}}} console.log(obj.a.b.c)// 一般情况下 //或者 let obj = {a:{b:{c:1}}} const {a:{b:{c}}} = obj console.log(c) -
ES6 对象解构赋值(浅拷贝 VS 深拷贝)
2019-09-20 20:21:36对象的扩展运算符(...)用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。 拷贝对象 let aa = { age: 18, name: 'aaa' } let bb = {...aa}; console.log(bb); // {age: 18, name: "aaa"} 合并对象 扩展... -
【ES6】解构赋值
2021-04-17 17:30:14文章目录一、解构赋值二、解构数组1....解构赋值:主要用来从数组和对象中提取值,对变量进行赋值。 []:是专门解构数组使用的 {}:是专门解构对象使用的 二、解构数组 1. 变量赋值 ES6之前的写法: var a1 = 1,b1 = -
es6 (解构赋值)复制对象中指定的对象属性值
2020-02-06 22:34:13当解构一个数组时,可以使用剩余模式,将数组剩余部分赋值给一个变量。 var [a, ...b] = [1, 2, 3]; console.log(a); // 1 console.log(b); // [2, 3] 注意:如果剩余元素右侧有逗号,会抛出 SyntaxError,因为... -
ES6—— 解构赋值(数组模型的解构、对象模型的解构)
2022-02-21 09:30:06ES6—— 解构赋值1. 什么是解构赋值2. 解构模型数组模型的解构(Array)示例一:基本示例二:可嵌套示例三:可忽略示例四:不完全解构示例五:剩余运算符示例六:字符串等示例七:解构默认值对象模型的解构(Object... -
es6 对象的解构赋值,设置默认值
2021-06-23 21:37:12var obj = {name: "xiaoming", age: 18, height: 181}; var ccc = 123; var { name, age, height, color=ccc } = obj; // name = "xiaoming" age=18 height=181 color=123 // 这里color在obj中没有值,使用的默认值... -
ES6 对象的解构赋值
2020-07-24 08:20:06因此解构赋值时变量名必须与对象的属性名保持一致 const obj={ a:1, b:2 }; let {a,b}=obj; 比较复杂的结构条件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&... -
ES6入门:对象解构赋值原理及应用
2022-01-27 16:10:52ES6入门:对象解构赋值原理及应用 一、对象解构赋值的原理 1、模式(结构)匹配 {}={} 2、属性名相同的完成赋值 const { age, username } = { username: 'Alex', age: 18 }; //18 "Alex" //完整形式为: const { ... -
ES6之解构赋值
2021-01-08 16:05:19解构赋值概念数组的解构赋值对象的解构赋值函数参数的解构赋值用途 概念 解构赋值语法是一种 Javascript 表达式。通过解构赋值, 可以将属性/值从对象/数组中取出,赋值给其他变量。 换句话说也就是ES6 允许按照一定... -
ES6-解构赋值及原理
2019-01-21 06:10:14基础语法 数组 // 基础类型解构 let [a, b, c] = [1, 2, 3] ...// 对象数组解构 let [a, b, c] = [{name: '1'}, {name: '2'}, {name: '3'}] console.log(a, b, c) // {name: '1'}, {name: '2'}, {name: ... -
TypeScript:函数传参如何进行es6的解构赋值
2022-04-08 11:22:44那么如果想用es6,解构赋值式的写法怎么写;我先来说一个错误的例子啊。。。不要笑 function sum10({a: number, b: number}): number { return a + b } 然后写完就报错了,我寻思我这写的也没毛病啊,解构赋值的写法... -
ES6变量的解构赋值--对象篇
2021-11-27 19:10:14对象的解构赋值要点详解 -
ES6解构赋值的功能与用途实例分析
2020-11-30 01:48:28本文实例讲述了ES6解构赋值的功能与用途。分享给大家供大家参考,具体如下: (1)交换变量的值 [x, y] = [y, x]; 上面代码交换变量x和y的值,这样的写法不仅简洁,而且易读,语义非常清晰。 (2)从函数返回多个... -
ES6新特性之对象解构赋值,数组解构赋值,set数据类型,箭头函数详解
2021-11-09 20:53:46对象解构是一种快速赋值的方式 代码如下: // 对象解构是一种快速赋值的方式 let obj = { name: '小昭', age: 18, hobby: '听歌' } // 下面这句话表示定义了name,age,hobby三个变量,然后把obj对象的的...