【发布时间】:2023-03-03 20:59:01
【问题描述】:
我学过数组解构语法,很好理解。
当我们说var {p, q} = o; 时,我们到底在做什么?
var {p, q} 中的 p 和 q 是否不同于 o 的属性,即 'p' 和 'q'?如果是的话,
为什么var {a, b} = o; 不起作用?
> var o = {p: 42, q: true};
undefined
> p
ReferenceError: p is not defined
> q
ReferenceError: q is not defined
> o['p']
42
> o['q']
true
> var {p, q} = o;
undefined
> p
42
> q
true
> var {a, b} = o;
undefined
> a
undefined
> b
undefined
*注意:我了解到,字典键是 javascript 中的字符串文字。*
【问题讨论】:
-
var {p, q} = o;===var p = o.p;和var q = o.q;这仅在变量具有相同名称时有效。 -
@Kitler 这不是一个奇特的概念吗?派生出哪种编程语言概念来提供这种便利?有没有其他语言可以做这种奇怪的事情?我认为解构是由 python 启发的
-
Weird 是非常主观的,从名称匹配的对象中为属性分配值是一种常见的模式,这个概念取自 coffeescript iirc。
-
@Kitler 变量同名? stackoverflow.com/questions/31915621/…
-
与对象上的键同名...感觉你甚至没有尝试过tbh,给learn es 2015阅读。
标签: javascript ecmascript-6 destructuring