繁体   English   中英

这些代码中`{}`和`()`之间有什么区别?

[英]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

'()'在第二句话中做了什么?

为什么它中的'{}'被认为是一个对象文字?

声明不能以Javascript中的大括号开头: 解构的陷阱

或者,可以使用以下表达式:

"",{a, b} = {a:1, b:2};

重要的是语句不以大括号开头,因为代码块以1开头。

第一个尝试为块分配值,这是不对的。 第二个相当于

{}({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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM