Confuso sobre a desestruturação dos parâmetros de função

No exemplo a seguir, por que a função whois () tem acesso a displayName2 e name1?

function whois({displayName: displayName2, fullName: {firstName: name1}}){
  console.log(`${displayName2} is ${name1}`)
}

let user = {
  displayName: "jdoe",
  fullName: {
      firstName: "John",
      lastName: "Doe"
  }
}
whois(user) // "jdoe is John"

Para quem não é treinado, parece que deveria ter acesso a displayName e fullName.firstName. A desestruturação se parece com JSON ao contrário.

O que está acontecendo sob o capô?

questionAnswers(2)

yourAnswerToTheQuestion