📅  最后修改于: 2023-12-03 14:59:10.069000             🧑  作者: Mango
var { ... } = ...
语句中的大括号有什么用?在 JavaScript 中,我们可以使用大括号进行对象字面量的定义,如下所示:
var person = { name: 'John', age: 32 };
这是非常常见的一种写法,但是在使用某些库或框架时,我们会遇到一种新的语法,即:
var { name, age } = person;
这两种写法看起来有些类似,但是有何不同呢?
使用大括号的目的:
当我们使用 var { ... } = ...
时,它的本质是从一个对象中提取值,并将这些值赋给对应的变量。这个过程叫作解构赋值。
对于上面的例子,我们可以将其改写成:
var name = person.name;
var age = person.age;
这个过程中,我们通过 person.name
和 person.age
的方式获取了对象中的属性,并将这些值赋给了对应的变量。
而当我们使用 var { ... } = ...
语法时,我们可以更加简单地完成这个过程。
var { name, age } = person;
在这个语法中,我们直接从 person
对象中取出 name
和 age
属性,并分别赋值给相应的变量。这使得代码更加简洁易懂。
同时解构出多个属性:
在某些情况下,我们想从一个对象中同时取出多个属性。此时,我们只需要在花括号中列出需要取出的属性即可。
例如,我们可以像下面这样从 person
对象中同时取出 name
和 age
属性,并分别赋值给 firstName
和 yearsOld
变量。
var { name: firstName, age: yearsOld } = person;
上述语法中,花括号指定了需要解构的属性,而冒号表示需要将这个属性的值重新赋值给一个新的变量。
我们在 name
属性前添加了一个 firstName
变量,这意味着我们将从 person
对象中获取 name
属性的值,并将其赋给 firstName
变量。
同样的,我们在 age
属性前添加了一个 yearsOld
变量,这意味着我们将从 person
对象中获取 age
属性的值,并将其赋给 yearsOld
变量。
在函数中使用解构赋值:
在 JavaScript 函数中,我们可以使用解构赋值语法来取出传递给函数的对象参数中的值。这使得函数写法更加简洁明了。
例如,假设我们传递了一个包含 name
和 age
属性的对象给 sayHello
函数。
function sayHello(person) {
console.log(`Hello ${person.name}, you are ${person.age} years old!`);
}
我们需要使用点号 .
语法在 person
对象上获取值,相当于给程序员带来了额外的工作。
然而,我们可以使用解构赋值语法来消除这个问题,使函数写法变得更加简洁。
function sayHello({ name, age }) {
console.log(`Hello ${name}, you are ${age} years old!`);
}
这个语法中,我们直接从传递的 person
对象中解构出 name
和 age
属性,并将它们作为参数传递给函数。 在调用这个函数时,我们可以直接传递一个包含 name
和 age
属性的对象。
var person = { name: 'John', age: 32 };
sayHello(person);
这个函数将会输出 Hello John, you are 32 years old!
。
总之,解构赋值语法使代码更加简洁,并且可以更好地利用对象字面量和函数语法结构。