在括号之间声明一个 javascript 对象以仅选择与其索引对应的元素

Declare a javascript object between brackets to choose only the element corresponding to its index

我在一本书上找到这个示例,这是我第一次看到这个符号。 显然,这比切换要短一千倍;但它是什么? 当我做 typeof(status) 它 returns undefined.

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

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

谢谢!

首先进行一些修复

  • 在函数前加'function'

这是一个工作示例:

    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));

这将 returns

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'
}

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

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

当使用对象未知的 id 时,undefined 为 return。 使用 || 将 return 'Unknow status: '+id 当状态具有虚假值(如未定义、空、假、...)时,否则实际值为 returned.

  return status || 'Unknow status: '+id
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 - 您的代码片段有误。您在代码块中错误地添加了一个额外的“}”