为什么变量 "y" 的值是 5?不是7?
Why value from variable "y" is 5? not 7?
首先抱歉我的英语不好
所以,这是我的代码:
let x = 5
const {x: y=7} = {x}
console.log(y) // output is 5
但为什么是 5 个?不是 7 吗?
{x}
对于 {x: x}
是 shorthand。由于x
的值为5
,这相当于{x: 5}
.
这意味着您的代码等同于
const {x: y=7} = {x: 5}
这会将 y
设置为 {x: 5}
中 x
属性 的值。如果没有属性,则使用默认值7
;但由于 属性 确实存在,它的值被使用,所以它将 y
设置为 5
.
比较
let a = 5;
const {x: y=7} = {a}
这会将 y
设置为 7
,因为对象中没有 x
属性。
注意:等于赋值有一个从左到右的操作
换句话说......左侧比右侧具有更高的优先级并覆盖左侧的任何值
const{ x = y } = {x = 5}
x........ maps to..........x
y......... maps to..........5 (overriding the previous y value)
还有…………你可以这样取
你刚才写的是
y=7
y=5
y=5 排在最后,所以它取代了之前的值
首先抱歉我的英语不好
所以,这是我的代码:
let x = 5
const {x: y=7} = {x}
console.log(y) // output is 5
但为什么是 5 个?不是 7 吗?
{x}
对于 {x: x}
是 shorthand。由于x
的值为5
,这相当于{x: 5}
.
这意味着您的代码等同于
const {x: y=7} = {x: 5}
这会将 y
设置为 {x: 5}
中 x
属性 的值。如果没有属性,则使用默认值7
;但由于 属性 确实存在,它的值被使用,所以它将 y
设置为 5
.
比较
let a = 5;
const {x: y=7} = {a}
这会将 y
设置为 7
,因为对象中没有 x
属性。
注意:等于赋值有一个从左到右的操作 换句话说......左侧比右侧具有更高的优先级并覆盖左侧的任何值
const{ x = y } = {x = 5}
x........ maps to..........x
y......... maps to..........5 (overriding the previous y value)
还有…………你可以这样取
你刚才写的是
y=7
y=5
y=5 排在最后,所以它取代了之前的值