javascript - Javascript 对象 - 为什么它的行为如此 + 对象名称周围的大括号
问题描述
我目前在这里学习 JS并有以下代码,但我不明白为什么它返回 name 属性。
let {name} = {name: "Faraji", age: 23};
console.log(name);
// → Faraji
当我从变量名中删除花括号时,我得到 [object Object]。为什么?
let name = {name: "Faraji", age: 23};
console.log(name);
// → [object Object]
当我使用大括号访问年龄属性时,我得到了未定义。为什么?
let {name} = {name: "Faraji", age: 23};
console.log(name.age);
// → undefined
并且在没有大括号的情况下访问 age 也会返回 undefined。但为什么?
let name = {name: "Faraji", age: 23};
console.log(name.age);
// → undefined
而更改name
为name1
按预期工作。那很好。
let name1 = {name: "Faraji", age: 23};
console.log(name1.age);
// → 23
解决方案
这是因为有了花括号,它就变成了一种解构。否则,为了访问对象值,您需要调用与该属性关联的对象。
let {name, age } = {name: "Faraji", age: 23};
console.log(name, age);
解构是用它们的键拆分和对象的过程。
let name = {name: "Faraji", age: 23};
console.log(name.name, name.age);
推荐阅读
- python - 熊猫:从另一列的子集字典创建列
- sql - Snowflake 在显示结果时自动压缩位于字符串中间的多个连续空格
- ubuntu-20.04 - 错误:在 ubuntu 20.04 上的 imc 0 上禁用了 edac skx ecc
- pandas - 如何在 mac os 中使用 conda 更新 pandas 库?
- azure-devops - 如何在 azure 管道内部版本号中指定时间字符串的格式
- bpf - eBPF:插入一个新的内部映射到`BPF_MAP_TYPE_HASH_OF_MAPS`?
- python - 如何在python中将计算出的timedelta显示为时间
- wso2 - 如何将 JSON 或 SOAP 属性用于路径 URL 参数或查询参数 WSO2 Entrerprise Integrator
- qt - 将自定义控件移动到自己的文件中时出现 QML TypeError
- python - Python 列表中除 13 及其后的数字外的数字总和