我遇到了这样的设计,但我在任何地方都找不到它的含义。
它叫什么,它有什么作用?
起初的想法是а.а等于空对象,然后呢?
为什么它最终出现在控制台中{a:2}?
let a = {}
a.a = 1
a.a = {} = 2 //что это значит
console.log(a)
a.a = a = 2 // это выдает circular посередине
我遇到了这样的设计,但我在任何地方都找不到它的含义。
它叫什么,它有什么作用?
起初的想法是а.а等于空对象,然后呢?
为什么它最终出现在控制台中{a:2}?
let a = {}
a.a = 1
a.a = {} = 2 //что это значит
console.log(a)
a.a = a = 2 // это выдает circular посередине
如果我没记错的话,您的神秘代码片段具有学术兴趣,即使它没有做任何有用的事情)
在分配序列中,操作从右向左流动。所以顺序是:
{} = 2:由于不可能给对象赋值(实际上一般来说给非变量赋值),我们正在处理没有变量的解构的边界情况。如果您使用nullor而不是两个undefined,错误消息将确认这一点。其他原语的解构是可能的:{ toString } = 2将toString函数分配给变量2..toString。在这种情况下,即使使用解构,赋值也会返回第二个操作数,即
2.该值最终分配给
a.a;