title: Why can functions be called without parentheses when using template strings?
body: <p>I have a simple logging function:</p>
  
  <pre><code>function log(str) {
    console.log('logged: ', str);
  }
  </code></pre>
  
  <p>If I call it without parentheses (currently using Chrome's dev tools) and pass in a template string, like this:</p>
  
  <pre><code>log`foo`
  </code></pre>
  
  <p>The output is: <code>logged:  ["foo", raw: Array[1]]</code></p>
  
  <p>If I call it with parentheses,</p>
  
  <pre><code>log(`foo`)
  </code></pre>
  
  <p>The output is: <code>logged: foo</code></p>
  
  <p>Why does calling a function using a template string an no parentheses work in Javascript? What is happening that causes the result to be different from calling it with parentheses?</p>