{"componentChunkName":"component---src-templates-blog-post-js","path":"/javascript/es6-let-cont/","result":{"data":{"site":{"siteMetadata":{"title":"Bottlehs Tech Blog","description":"웹·앱·AI 개발자 전병훈(bottlehs)의 기술 블로그. AI·LLM, JavaScript·Vue, Spring Boot, 알고리즘, 블록체인 실무 가이드를 다룹니다","siteUrl":"https://www.bottlehs.dev","author":{"name":"Jeon Byung Hun","summary":"개발을 즐기는 bottlehs - Engineer, MS, AI, FE, BE, OS, IOT, Blockchain, 설계, 테스트"},"social":{"github":"bottlehs","codepen":"bottlehs"}}},"markdownRemark":{"id":"553c6325-0d44-5104-8a25-dd0b9629cbbb","excerpt":"ES6 let & cont 기존에는 var 키워드로 변수와 상수를 모두 정의 하였지만 ES6에서는 변수와 상수를 구분할수 있는 let 과 const 가 추가 되었다. let let 은 변수를 정의할 때 사용된다.\n변수는 변하는 값을 의미한다. 기존 var…","html":"<p><img src=\"/assets/es6.png\" alt=\"ES6 let &#x26; cont\" title=\"ES6 let &#x26; cont\"></p>\n<p>기존에는 var 키워드로 변수와 상수를 모두 정의 하였지만 ES6에서는 변수와 상수를 구분할수 있는 let 과 const 가 추가 되었다.</p>\n<h2 id=\"let\" style=\"position:relative;\"><a href=\"#let\" aria-label=\"let permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>let</h2>\n<p>let 은 변수를 정의할 때 사용된다.\n변수는 변하는 값을 의미한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> coffee <span class=\"token operator\">=</span> <span class=\"token string\">\"americano\"</span></code></pre></div>\n<p>기존 var 키워드로 선언한 변수를 함수 스코프(scope) 변수라고 하며, 함수 안에서 변수를 선언하면 함수 외부를 제외하고 함수 내부 어디서든지 접근할수 있다. 이와 달리 let 은 블록 스코프 변수이며, 블록 스코프 안에서 변수를 선언하면 블록 내부에서만 접근을 할수 있고 외부에서는 접근 할 수 없다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">coffee</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">var</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">let</span> americano <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\n  <span class=\"token punctuation\">}</span>\n\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>esspresso<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 출력 1</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>americano<span class=\"token punctuation\">)</span> <span class=\"token comment\">// if 문 안에서만 접근 가능하므로 reference 에러 발생</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>또한, 같은 스코프에서는 같은 이름의 let 변수를 선언할 수 없다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">coffee</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">let</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">let</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">2</span> <span class=\"token comment\">// SyntaxError 발생</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>여러 개의 변수를 선언하기 위해 콤마(,)로 구분하여 연속해서 선언할 수 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n  americano <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span>\n  macchiato\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>esspresso<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 출력 1</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>americano<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 출력 2</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>macchiato<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 출력 undefined</span></code></pre></div>\n<p>여기서 값을 할당하지 않을경우 undefined 가 할당 된다.\nlet 과 var 의 주된 차이점 중 하나는 this 키워드가 참조하는 오브젝트의 차이이다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">var</span> americano <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>esspresso<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 출력 1</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>americano<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 출력 undefined</span></code></pre></div>\n<p>var 키워드로 선언한 변수는 this 가 window 오브젝트를 참조하므로 접근할 수 있지만 let 은 접근 할수 없다</p>\n<p>ES6 하위 호환성을 위해 var 키워드를 여전히 사용 가능하지만, ES6 에서는 let 사용을 권장한다.</p>\n<h2 id=\"const\" style=\"position:relative;\"><a href=\"#const\" aria-label=\"const permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>const</h2>\n<p>const 은 상수를 정의할 때 사용된다.\n상수는 변하지 않는 값을 의미한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> coffee <span class=\"token operator\">=</span> <span class=\"token string\">\"americano\"</span></code></pre></div>\n<p>기존에는 상수를 선언 할수있는 키워드가 없었다. 그래서 변수,상수 모두 var 로 정의하여 사용 하였다.\nES6 에서는 상수를 정의할수 있는 키워드가 추가 되었고 상수 선언은 const 로 할수있다.\nconst 는 블록 스코프 상수 이며, 블록 스코프 안에서 상수를 선언하면 블록 내부에서만 접근 할수 있고 외부에서는 접근 할 수 없다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">coffee</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">var</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">const</span> americano <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\n  <span class=\"token punctuation\">}</span>\n\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>esspresso<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 출력 1</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>americano<span class=\"token punctuation\">)</span> <span class=\"token comment\">// if 문 안에서만 접근 가능하므로 reference 에러 발생</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>또한, 같은 스코프에서는 같은 이름의 const 상수를 선언할 수 없다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">coffee</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token boolean\">true</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">const</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n    <span class=\"token keyword\">const</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">2</span> <span class=\"token comment\">// SyntaxError 발생</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>한번 정의된 상수는 재정의 할수 없다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">const</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">2</span> <span class=\"token comment\">// SyntaxError 발생</span></code></pre></div>\n<p>여러 개의 상수를 선언하기 위해 콤마(,)로 구분하여 연속해서 선언할 수 있다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> americano <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> macchiato<span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>esspresso<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 출력 1</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>americano<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 출력 2</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>macchiato<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 출력 undefined</span></code></pre></div>\n<p>여기서 값을 할당하지 않을경우 undefined 가 할당 된다.\nconst 와 var 의 주된 차이점 중 하나는 this 키워드가 참조하는 오브젝트의 차이이다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> esspresso <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">var</span> americano <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>esspresso<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 출력 1</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>americano<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 출력 undefined</span></code></pre></div>\n<p>var 키워드로 선언한 변수는 this 가 window 오브젝트를 참조하므로 접근할 수 있지만 const 은 접근 할수 없다</p>\n<p>ES6 하위 호환성을 위해 var 키워드를 여전히 사용 가능하지만, ES6 에서 상수선언은 const 사용을 권장한다.</p>","tableOfContents":"<ul>\n<li><a href=\"/javascript/es6-let-cont/#let\">let</a></li>\n<li><a href=\"/javascript/es6-let-cont/#const\">const</a></li>\n</ul>","wordCount":{"words":293},"fields":{"slug":"/javascript/es6-let-cont/","image":"/assets/es6.png","faq":[]},"frontmatter":{"title":"ES6 let & cont","date":"2020년 10월 11일","dateISO":"2020-10-11T07:11:12.292Z","updatedISO":null,"category":"javascript","description":"let, const 는 ES6 에 추가 되었다. let,const는 변수(let)와 상수(const)를 구분 하여 정의할때 사용 된다.","tags":["JavaScript","ES6","ECAMScript 2015","Let","Const","Var"]}}},"pageContext":{"slug":"/javascript/es6-let-cont/","previous":{"fields":{"slug":"/javascript/es6-vs-es5/"},"frontmatter":{"title":"ES6 vs ES5","tags":["ES6","ECMAScript 2016","Javascript","ES5","ECMAScript 5"]}},"next":{"fields":{"slug":"/javascript/polymer/"},"frontmatter":{"title":"Polymer","tags":["polymer","javascript","framework","frontend","web"]}}}},"staticQueryHashes":["213619243","3262363727"]}