Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS解构复杂语句?_Javascript_Ecmascript 6 - Fatal编程技术网

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
的新属性,并为其赋值。