Javascript JS解构复杂语句?
Javascript JS解构复杂语句?,javascript,ecmascript-6,Javascript,Ecmascript 6,let消息={ 1: { id:'1', 文字:“你好,世界”, 用户ID:'1', }, 2: { id:'2', 文本:“按世界”, 用户ID:'2', }, }; //这句话是怎么说的? 常数{ [1] :讯息, …其他信息 }=讯息; 日志(“其他消息:”,其他消息)当尝试分配变量otherMessages时,运行时会检查其声明位置。在本例窗口中,当它到达顶层时,它会向上扩展作用域,声明变量,然后使用解构语法分配给它 换一种方式思考:如果你要做这样的事情: otherMessages =
let消息={
1: {
id:'1',
文字:“你好,世界”,
用户ID:'1',
},
2: {
id:'2',
文本:“按世界”,
用户ID:'2',
},
};
//这句话是怎么说的?
常数{
[1] :讯息,
…其他信息
}=讯息;
日志(“其他消息:”,其他消息)代码>当尝试分配变量otherMessages时,运行时会检查其声明位置。在本例窗口中,当它到达顶层时,它会向上扩展作用域,声明变量,然后使用解构语法分配给它
换一种方式思考:如果你要做这样的事情:
otherMessages = [1, 2]
如果不事先将otherMessages声明为var,运行时不会为您声明变量吗
这是一个分解任务
在=
符号的左侧,声明要分解的变量,在右侧声明要分解的变量
这样做,您将声明两个变量message
和otherMessages
:
const { [1]: message, ...otherMessages } = messages;
您正在将键1
的值提取到message
中,其余messages
对象将被分解为其他messages
由于messages
包含两个带有键1
和2
的条目,otherMessages
将是一个包含剩余键的对象,这只是键2
这只是普通的@CodeManiac,我不认为它是重复的。@CodeManiac nice,我在找一本关于解构的规范书,而你在一个月前(直到今天!)已经写了一本。@HenokTesfaye你检查过链接的答案了吗?若你们并没有找到相关的答案,请告诉我JavaScript中并没有“扩展操作符”这样的东西。Spread和rest都是语法,但它们都不是运算符。这是rest语法的一个示例,因为它从消息中收集逗号分隔的条目,而不是像spread语法那样将逗号分隔的条目分发到任何地方。“如果事先没有将其他消息声明为var,运行时不会为您声明变量”嗯,不完全是这样。如果没有为变量找到绑定,它将进入作用域链,它将在全局对象上创建一个名为otherMessages
的新属性,并为其赋值。