0

我在一本书中找到了这个样本,这是我第一次看到这个符号。显然它比做一个开关要短一千倍。但它是什么?当我这样做时 typeof(status),它返回未定义。

我想了解它是什么,以便我可以在下一个代码中更频繁地应用它!

function statusformId(id) {
  const status = ({
    0: 'in the bed',
    1: 'face to your computer',
    2: 'a little bit silly',
    3: 'nowhere'
  })[id];
  return status || 'Unknow status: ' + id;
}
console.log('statusformId(2) ...', statusformId(2)); // a little bit silly
console.log('statusformId() ...', statusformId());   // Unknow status: undefined

谢谢!

4

2 回答 2

1

首先是一些修复

  • 在它是一个函数之前添加“函数”。

这是一个工作示例:

    function statusformId(id){
      const status = (
        {
          0: 'in the bed',
          1: 'face to your computer',
          2: 'a little bit silly',
          3: 'nowhere'
        }
      )[id];
      return status || 'Unknow status: '+id
    }
    console.log(statusformId(0));
    console.log(statusformId(1));
    console.log(statusformId(2));
    console.log(statusformId(3));
    console.log(statusformId(4));

这将返回

in the bed
face to your computer
a little bit silly
nowhere
Unknow status: 4

为什么:

这表示一个具有一些索引的对象,其中 0 的值为 'in the bed', ... 。

{
  0: 'in the bed',
  1: 'face to your computer',
  2: 'a little bit silly',
  3: 'nowhere'
}

将对象包装在子表达式中并添加索引将创建对象并返回传递的索引的值。

      const status = (
        {
          0: 'in the bed',
          1: 'face to your computer',
          2: 'a little bit silly',
          3: 'nowhere'
        }
      )[id];

当使用对象不知道的 id 时,返回 undefined。using||'Unknow status: '+id在 status 具有虚假值(如 undefined、null、false、...)时返回,否则返回实际值。

  return status || 'Unknow status: '+id
于 2021-03-25T09:47:11.457 回答
1
const a = {0:'zero'}
console.log(a[0]);

const a = ({0:'zero'})[0]
console.log(a);

您最终试图通过索引访问对象属性。您的代码可以编写如下。

function statusformId(id){
      const status = {
          0: 'in the bed',
          1: 'face to your computer',
          2: 'a little bit silly',
          3: 'nowhere'
        }

      return status[id] || 'Unknow status: '+id
}

PS - 你的代码片段是错误的。您错误地在代码块中添加了额外的“}”

于 2021-03-25T09:47:26.040 回答