[英]What's the difference between `{}` and `()` in these code?
Destructuring_assignment#Assignment_without_declaration
它说:
左侧的{a,b}被视为块而不是对象文字。
var a, b;
{a, b} = {a:1, b:2};//Syntax Error!
({a, b} = {a:1, b:2}); // it works
'()'在第二句话中做了什么?
为什么它中的'{}'被认为是一个对象文字?
第一个尝试为块分配值,这是不对的。 第二个相当于
{}({a, b} = {a:1, b:2});
所以在这里你要调用一个构造函数,提供属性块并为它们赋值。
我可以简单地引用您链接的样本旁边的高亮解释:
我觉得很清楚
在没有声明的情况下使用对象文字解构赋值时,赋值语句周围的(..)是必需的语法。
{a, b} = {a:1, b:2}
不是有效的独立语法,因为左侧的{a, b}
被视为块而不是对象文字。但是,
({a, b} = {a:1, b:2})
是有效的,因为var {a, b} = {a:1, b:2}
我们不能将任何值赋给任何文字,如数组,对象,字符串。
例如:[a] = [1];
{a} = {1};
“a”=“b”;
但我们可以使用逗号分隔符分配值
[a],{a} = {a:1};
输出:
[a] - [1]
{a} - {a:1}
注意:
1.对象文字不应该是初始化中的第一个。
2.In字符串文字永远不会存储任何值。
() - 是qualto return语句
无论你在{}中给出什么,它都会自动执行;
要检查函数中的代码{return;} ,它将返回函数。
只需查看代码剪切以便理解。
var a =5;b=6; console.log(JSON.stringify({a,b})); //Output: {"a":5,"b":6} [a,b],{a,b} = {"a":1, "b":2}; console.log(JSON.stringify([a,b])); console.log(JSON.stringify({a,b})); //Output: //[1,2] //{"a":1,"b":2} var name = (function(){return "lotus"}); console.log(name); //Output: function(){return "lotus"} name = (function(){return "lotus"})(); console.log(name); //Output: lotus name = ({a, b} = {a:3, b:4}); console.log(JSON.stringify(name)); //Output: {"a":3,"b":4}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.