【问题标题】:What is the syntax {object}[index] called?{object}[index] 的语法是什么?
【发布时间】:2020-11-18 20:53:16
【问题描述】:

在 React 中,我经常使用这种语法进行条件渲染:

const exampleState = 1;

const retval = {
    0: "Value for state 0",
    1: "Value for state 1",
    2: "Value for state 2",
}[exampleState]

// this returns "Value for state 1"

这个语法叫什么?

编辑:添加const retval 使其成为真正有效的代码

【问题讨论】:

  • 这能回答你的问题吗? What does this symbol mean in JavaScript?
  • 在这种情况下“无效”。虽然,我假设你的意思是bracket syntax。这是一种类型或属性访问。
  • 这种语法没有什么特别之处。您刚刚声明了一个对象,但它是临时的,因为您没有将它分配给变量。然后,您只需获取带有临时对象键 1 的属性。
  • @VLAZ 修复了代码。括号语法就是这样,我只是想多了,并试图找到一个特定速记的名称,因为它只是一个在上面 Paul Rooney 所说的同一行中声明和访问的对象。感谢您的快速回复!
  • @PaulRooney 超级简单一旦你指出来,我之前只是想多了,谢谢你的快速回复!

标签: javascript syntax


【解决方案1】:

{ } 块定义了一个对象。 [] 部分是property accessor 的括号表示法。

【讨论】:

  • "{ } 块定义了一个对象" 仅在这种情况下,它定义了一个带有标签的块。
  • @Teemu 如果使用 literally 与 OP 显示的代码相同的代码,那么 { } 确实 不是 定义了一个对象,而是一个代码块。行首的{ 不会被解释为对象字面量语法。由于这将被解析为代码块,因此0: 应该是a label。但是,标签不能以数字开头,因此 OP 中的代码会引发语法错误。与对象的键无关,因为没有定义任何对象或键。
  • 这正是我所需要的,不知何故我没有意识到它是如此简单,我正在寻找一些简写来称呼它......谢谢!
【解决方案2】:
{
    0: "Value for state 0",
    1: "Value for state 1",
    2: "Value for state 2",
}

是一个key:value对象。

所以您的代码会从该对象返回键 0 的值。

【讨论】:

    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多