We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The text was updated successfully, but these errors were encountered:
在一条语句中使用嵌套数据实现一个或多个赋值操作。对象解构就是使用与对象匹配的结构来实现对象属性赋值。
// 使用对象解构 let person = { name: 'Matt', age: 27 }; let { name: personName, age: personAge } = person; console.log(personName); // Matt console.log(personAge); // 27 // or // 让变量直接使用属性的名称 let { name, age } = person; console.log(name); // Matt console.log(age); // 27
解构赋值不一定与对象的属性匹配。赋值的时候可以忽略某些属性,而如果引用的属性不存在,则 该变量的值就是 undefined。
解构在内部使用函数 ToObject()(不能在运行时环境中直接访问)把源数据结构转换为对象。这意味着在对象解构的上下文中,原始值会被当成对象。这也意味着(根据 ToObject()的定义),null和 undefined 不能被解构,否则会抛出错误。
// 先声明变量的写法 // 如果是给事先声明的变量赋值,则赋值表达式必须包含在一对括号中: let personName, personAge; let person = { name: 'Matt', age: 27 }; ({name: personName, age: personAge} = person); console.log(personName, personAge); // Matt, 27
解构对于引用嵌套的属性或赋值目标没有限制。
在函数参数列表中也可以进行解构赋值。对参数的解构赋值不会影响 arguments 对象,但可以在函数签名中声明在函数体内使用局部变量。
let person = { name: 'Matt', age: 27 }; function printPerson(foo, {name, age}, bar) { console.log(arguments); console.log(name, age); } function printPerson2(foo, {name: personName, age: personAge}, bar) { console.log(arguments); console.log(personName, personAge); } printPerson('1st', person, '2nd'); // ['1st', { name: 'Matt', age: 27 }, '2nd'] // 'Matt', 27 printPerson2('1st', person, '2nd'); // ['1st', { name: 'Matt', age: 27 }, '2nd'] // 'Matt', 27
Sorry, something went wrong.
No branches or pull requests
题目:JavaScript、说说对象结构
The text was updated successfully, but these errors were encountered: