繁体   English   中英

let foo = ({bar() {}}) 和 let foo = {bar() {}} 有什么区别?

[英]What is the difference between let foo = ({bar() {}}) and let foo = {bar() {}}?

我想弄清楚两者之间有什么区别;

let foo = ({ bar() {} });

let foo = { bar() {} };

我不清楚为什么代码使用括号

const actions = ({
  setCounter ({ commit }, obj) {
    commit(MAIN_SET_COUNTER, obj)
  }
})

我尝试了什么;

  • 我假设为 IFEE,但我不明白它是如何工作的

  • 我假设为 function 声明的简写

您展示的前两个示例在语义上是相同的。 在这两种情况下, foo都被分配了一个带有Method definition的 object 文字。 牙套没什么区别。 正如评论所暗示的那样, var foo = 1; 等同于var foo = (1); . 在第三个示例中,它们也不是必需的。 请注意,它们也不是一个错误。

有一些例子,这样的大括号会有所作为,但它们不是你展示的那些。 想到的一些:

  • 从箭头 function 返回 object,简写版本: let foo = () => ({}); , 区别于空代码块。

  • 将代码块与独立的 object 区分开来,例如在控制台中: {} + []; ({}) + [];

  • IIFE,将 function 声明语句转换为表达式: (function f(){})(); , 而function f(){}(); 会导致错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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