{"componentChunkName":"component---src-templates-post-js","path":"/blog/template-literals","result":{"data":{"markdownRemark":{"html":"<p class='intro'>There are two ways to write strings in javascript - single quotes and double quotes. With ES6, we have another way to write strings using backticks (``). This is called Template literal. Let's dive into details!\n</p>\n<h3>String Interpolation</h3>\n<p>Before ES6, if wanted to put a variable in the string we had to concatenate it. Every other language provided some sort of placeholder for variables in the string but not javascript. Thankfully with Template literal, we can put variables inside <code class=\"language-text\">${var}</code> and its value will be reflected in the string.</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> name <span class=\"token operator\">=</span> <span class=\"token string\">'Elliot'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> age <span class=\"token operator\">=</span> <span class=\"token number\">30</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">let</span> sentence <span class=\"token operator\">=</span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">My name is </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>name<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> and I am </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>age<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> years old.</span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>sentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// My name is Elliot and I am 30 years old.</span></code></pre></div>\n<p>Pretty cool right? It gets even cooler when you know that you can put any javascript expression between <code class=\"language-text\">${expression}</code>. The expressions will be evaluated and their values will be reflected in strings. Let's see an example:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> a <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> b <span class=\"token operator\">=</span> <span class=\"token number\">20</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">let</span> sentence <span class=\"token operator\">=</span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">The sum of </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>a<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> and </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>b<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> is </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>a <span class=\"token operator\">+</span> b<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">.</span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>sentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// The sum of 10 and 20 is 30.</span></code></pre></div>\n<h3>Multiline Strings</h3>\n<p>With backticks we can also write multiline strings as below:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> sentence <span class=\"token operator\">=</span> <span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">This is on first line.\nThis is one second line.</span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>sentence<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// This is on first line.</span>\n<span class=\"token comment\">// This is one second line.</span></code></pre></div>\n<h3>Tagged Template Literals</h3>\n<p>Whenever we use backticks to generate a string, a function gets called. By default, this function concatenates the values and string. However, we can do any modification to values if we want to do inside the function. We need to put a function name before starting backtick. This function will get called with strings and values. Let's see an example:</p>\n<div class=\"gatsby-highlight\" data-language=\"js\"><pre class=\"language-js\"><code class=\"language-js\"><span class=\"token keyword\">const</span> person <span class=\"token operator\">=</span> <span class=\"token string\">'Elliot'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> age <span class=\"token operator\">=</span> <span class=\"token number\">28</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">let</span> str <span class=\"token operator\">=</span> myTag<span class=\"token template-string\"><span class=\"token template-punctuation string\">`</span><span class=\"token string\">that </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>person<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> is a </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>age<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token template-punctuation string\">`</span></span><span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// that Elliot is a youngster</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">myTag</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">strings<span class=\"token punctuation\">,</span> <span class=\"token operator\">...</span>values</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>strings<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// ['that ', ' is a', '' ]</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>values<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// ['Elliot', 28]</span>\n\n  <span class=\"token keyword\">let</span> str0 <span class=\"token operator\">=</span> strings<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">let</span> str1 <span class=\"token operator\">=</span> strings<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">let</span> person <span class=\"token operator\">=</span> values<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">let</span> age <span class=\"token operator\">=</span> values<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">let</span> ageStr <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>age <span class=\"token operator\">></span> <span class=\"token number\">99</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    ageStr <span class=\"token operator\">=</span> <span class=\"token string\">'centenarian'</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n    ageStr <span class=\"token operator\">=</span> <span class=\"token string\">'youngster'</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token keyword\">return</span> str0 <span class=\"token operator\">+</span> person <span class=\"token operator\">+</span> str1 <span class=\"token operator\">+</span> ageStr<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>This is all for this post. Thanks for reading!</p>","timeToRead":2,"frontmatter":{"title":"Template Literals in Javascript","date":"2017-12-18T00:00:00.000Z","tags":["Javascript"]}}},"pageContext":{"slug":"template-literals"}},"staticQueryHashes":["3649515864","63159454"]}