title: Assign a changed function to another variable and get different body with same name
body: <p>I declare a function </p>
  
  <pre><code>function hello(){console.log("Hello World!");}
  </code></pre>
  
  <p>then assign it to a variable</p>
  
  <pre><code>newHello = hello;
  </code></pre>
  
  <p>In Console I get function definition for hello and newHello functions.</p>
  
  <pre><code>&gt;newHello = hello;
  ƒ hello(){console.log("Hello World!");}
  &gt;hello;
  ƒ hello(){console.log("Hello World!");}
  </code></pre>
  
  <p>After that i change hello function and assign it to new variable as bellow:</p>
  
  <pre><code>function hello(){console.log("Hello World Changed!");}
  newNewHello=hello;
  </code></pre>
  
  <p>I get function definition for hello and newHello and newNewHello functions and receive follow results:</p>
  
  <pre><code>&gt;hello
  ƒ hello(){console.log("Hello World Changed!");}
  &gt;newHello
  ƒ hello(){console.log("Hello World!");}
  &gt;newNewHello
  ƒ hello(){console.log("Hello World Changed!");}
  </code></pre>
  
  <p>Why name of these function is equal but body of them if not equal and how it work in background if javascript language?</p>