为什么变量 "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 排在最后,所以它取代了之前的值