Как работает данный код? Почему объект выводиться?

js

window.addEventListener('keydown',(e)=>{
   obj = {
      '1': one,
      '2': two,
      '3': three,
      '4': four,
      'ArrowLeft': left,
      'ArrowRight': right,
   }[e.key] // как работает данная часть кода? тут не понятно
   obj?.(e.key)// здесь понятно
})

function one(e){
   console.log(e)
}
function two(e){
   console.log(e)
}
function three(e){
   console.log(e)
}
function four(e){
   console.log(e)
}
function left(e){
   console.log(e)
}
function right(e){
   console.log(e)
}

Ответы (1 шт):

Автор решения: Aziz Umarov

Ваш вопрос

obj = {
      '1': one,
      '2': two,
      '3': three,
      '4': four,
      'ArrowLeft': left,
      'ArrowRight': right,
   }[e.key] // как работает данная часть кода? тут не понятно

можно переписать так

  let obj = {
      '1': one,
      '2': two,
      '3': three,
      '4': four,
      'ArrowLeft': left,
      'ArrowRight': right,
   };// Создание и присвоение объекта;

   let func = obj[e.key]; // взятие значения свойства e.key объекта obj и присвоение переменной func

Поскольку у вас 2 операции производятся за раз. То в obj у вас может храниться указатель на функцию.

→ Ссылка