美文网首页
双语学习解构赋值、数组解构和对象解构

双语学习解构赋值、数组解构和对象解构

作者: 果然 | 来源:发表于2019-08-02 12:29 被阅读0次
双语学习解构赋值、数组解构和对象解构

解构赋值语法是一种 Javascript 表达式。通过解构赋值, 可以将属性值从对象或数组中取出,赋值给其他变量。

The destructuring assignment syntax is a JavaScript expression that makes it possible to unpack values from arrays, or properties from objects, into distinct variables.

描述

对象和数组逐个对应表达式,或称对象字面量和数组字面量,提供了一种简单的定义一个特定的数据组的方法。

Description

The object and array literal expressions provide an easy way to create ad hoc packages of data.

数组解构

Array destructuring

为了理解数组解构,我举个例子吧,这个例子是我们家孩子暑假的学习list。他暑假要学习语文、数学、英语,他自己还喜欢画画。

const hugetodoListToday = ['Language', 'math','English','painting']; 
const [Language, math] = hugetodoListToday; 
console.log(Language,math);//Language math

获取到相应位置的值
Get the value to the corresponding location
可以用不同的变量代替数组中第一、第二项的值。例如,用a1、a2代替Langugae和math.

const hugetodoListToday = ['Language', 'math','English','painting']; 
const [a1,a2] = hugetodoListToday; 
console.log(a1,a2);、//Language math

忽略某些返回值

Ignoring some returned values

可以用中间添加逗号的方式忽略返回值,下面的例子,我们忽略了第二项--math,

const hugetodoListToday = ['Language', 'math','English','painting']; 
const [a1,,a2] = hugetodoListToday; 
console.log(a1,a2);//Language English

剩余参数

rest parameter

将剩余数组赋值给一个变量

Assigning the rest of an array to a variable

const hugetodoListToday = ['Language', 'math','English','painting']; 
const [a1,...a2] = hugetodoListToday;
console.log(a1,a2);//Language 0: "math"1: "English"2: "painting"

得到的结果是:一个Language和由其他参数组成的数组

这里补充一点剩余参数的知识:

剩余参数语法允许我们将一个不定数量的参数表示为一个数组。

The rest parameter syntax allows us to represent an indefinite number of arguments as an array.

Description

A function's last parameter can be prefixed with ... which will cause all remaining (user supplied) arguments to be placed within a "standard" javascript array. Only the last parameter can be a "rest parameter".

如果函数的最后一个命名参数以...为前缀,则它将成为一个由剩余参数组成的真数组,其中从0(包括)到theArgs.length(排除)的元素由传递给函数的实际参数提供。

function myFun(a, b, ...manyMoreArgs) { 
console.log("a", a); 
console.log("b", b); 
console.log("manyMoreArgs", manyMoreArgs);
 } 
myFun("one", "two", "three", "four", "five", "six"); 
// Console Output: 
// a, one 
// b, two 
// manyMoreArgs, [three, four, five, six]

补充知识2:实参和形参

function sum(sum1,sum2){//形参
 var c = sum1+sum2; 
for(var i=0;i<arguments.length;++){ 
console.log(arguments[i]); 
}
 console.log(c); 
};
 sum(1,20); //实参

这里的sum1和sum2就是形参

当你调用函数的时候传入的参数就为实参

剩余参数和 arguments对象之间的区别主要有三个:

  • 剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。
  • arguments对象不是一个真正的数组,而剩余参数是真正的 Array实例,也就是说你能够在它上面直接使用所有的数组方法,比如 sort,map,forEach或pop。
  • arguments对象还有一些附加的属性 (如callee属性)。

Difference between rest parameters and the arguments object

There are three main differences between rest parameters and the arguments object:

  • rest parameters are only the ones that haven't been given a separate name (i.e. formally defined in function expression), while the arguments object contains all arguments passed to the function;
  • the arguments object is not a real array, while rest parameters are Array instances, meaning methods like sort, map, forEach or pop can be applied on it directly;
  • the arguments object has additional functionality specific to itself (like the calleeproperty).

补充小知识3:

the rest 和the other的区别

the other 一般是指两者中的一个,比如说the one,the other one,或者用来表示另一部分,比如说 一些人同意这个计划,另一些人不同意,就可以说,some people agreed this plan,but the others didn't.

the rest 一般指剩下的全部,例如 the rest of your life,the rest of the money.the rest 一般情况下与of 搭配.

回到正题。

解构数组默认值问题,

Default values

const hugetodoListToday = ['Language', 'math','English','painting']; 
const [a1,a2,a3,a4,a5 = 'program'] = hugetodoListToday;
console.log(a1,a2,a4,a5,a3);
//Language math painting program English

注意输出顺序改了一下哟

如果默认值是null

const hugetodoListToday = ['Language', 'math','English','painting',null]; 
const [a1,a2,a3,a4,a5 = 'program'] = hugetodoListToday; 
console.log(a1,a2,a4,a5,a3);
// Language math painting null English

变量先声明后赋值时的解构

应用场景:交换数组的值,
就是交换变量
Swapping variables

let one = 1, two = 2; 
[one,two] = [two,one];
console.log(one,two);

对象解构
Object destructuring

基本赋值
Basic assignment

const huge = { 
name: 'huge',
 age: 9, 
todoList:{ 
Language: 'Copybook', 
math: 'Paper', 
English: 'word'
 }, 
}
 const {name, age} = huge;
 console.log(name);// huge
 console.log(age);// 9

无声明赋值
Assignment without declaration

let a, b;
 ({a, b} = {a: 1, b: 2});

解构嵌套对象和数组
Nested object and array destructuring

const huge = { 
name: 'huge', 
age: 9,
 todoList:{ 
Language: 'Copybook', 
math: 'Paper', 
English: 'word' 
}, 
} 
const {Language: l, math: m, English: e, painting = 'comic'} = huge.todoList;
console.log(l);//Copybook
 console.log(m);//Paper
 console.log(e); //word
console.log(painting);//comic

上面的例子还给变量重新命名,Language重命名为l。

相关文章

  • 解构赋值

    解构赋值 解构赋值可分为数组解构赋值和对象解构赋值,数组解构赋值要求右侧必须可迭代(具有Iterator 接口),...

  • 3.解构赋值

    解构的分类 对象解构 数组解构 混合解构 解构参数 对象解构 解构赋值 嵌套对象解构 数组解构 数组解构 选择性的...

  • ECMAScript6 -- 解构赋值

    解构赋值 数组的解构赋值 对象的解构赋值 特殊: 数组的解构赋值 如果右边不是数组,默认转换为类数组 对象的解构赋...

  • ES6 2.解构赋值

    解构赋值 解构赋值的分类 数组解构赋值 对象解构赋值 字符串解构赋值 布尔值解构赋值 函数参数解构赋值 数值解构赋...

  • ES6解构赋值、交换两个变量的值、设置函数默认值、模板字符串、箭

    1,解构赋值 解构赋值主要包括数组的解构赋值、对象的解构赋值、字符串的解构赋值、函数参数的解构赋值。 (1)数组的...

  • 解构赋值,设置函数默认值,箭头函数

    1,解构赋值 解构赋值主要包括数组的解构赋值、对象的解构赋值、字符串的解构赋值、函数参数的解构赋值。 (1)数组的...

  • ES6 语法(解构赋值)

    什么是解构赋值及用法 解构赋值分类:数组解构赋值对象解构赋值字符串解构赋值布尔值解构赋值函数参数解构赋值数值解构赋...

  • es6解构赋值(数组解构)

    解构赋值什么是解构赋值左边和右边一一对应进行赋值解构赋值的分类数组解构赋值(重点) 对象解构赋值(重点)字符串解构...

  • 解构赋值

    数组解构赋值 等号右边为数组或具备Iterator接口 对象解构赋值 字符串解构赋值 数值和布尔值解构赋值 函数参...

  • 解构赋值和拓展运算符

    解构 1、数组解构 2、对象的解构赋值 3、字符串的解构赋值 4、数值和布尔值的解构赋值 5、函数参数的解构赋值 ...

网友评论

      本文标题:双语学习解构赋值、数组解构和对象解构

      本文链接:https://www.haomeiwen.com/subject/tzakdctx.html