We don ' t give a damn for the whole state of Michigan , the whole state of Michigan . <| sep |> Thats correct . It does not matter for structs . I think the biggest difference is that destructing optionally produces undefined when the data is not there . With Elixir , it will instead execute the next or whichever matches function so you can control the flow of data . Heres an example # In elixir , if a user is passed in , it will destructure the id field # otherwise it assumes the id itself was passed in def find % Userid id , do findid def findid , do Repo . getUser , id Whereas in javascript you ' d have to handle that case in a single function , checking for undefined function find Since the field could possibly not have an id , this is potentially undefined . Now we have to look at the first argument and assume its the type we were expecting . If it is not we crash with a bizzare message whereas Elixir is more strict when we want it db . users . findid arguments . id