{"data":{"site":{"siteMetadata":{"title":"lastrites2018","author":"lastrites2018","siteUrl":"https://lastrites2018.netlify.com","comment":{"disqusShortName":"","utterances":"lastrites2018/gatsby-first-blog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"381ee65b-da0d-595d-8173-8581d4359b22","excerpt":"check point 1-2 solution underbar rework each 와 map 차이 -> map은 무조건 리턴 for ~ of의 경우는  반복가능한 객체  ( ,  ,  ,  ,  ,  arguments  객체 등을 포함)에 대해서 사용 가능하다. Object에서는 쓸 수 없으나 아래와 같은 방법으로 사용 가능. (출처 -  https://esdiscuss.org/topic/es6-iteration-over-object-values ) this review Strictly Equal…","html":"<h2 id=\"check-point-1-2-solution\"><a href=\"#check-point-1-2-solution\" aria-label=\"check point 1 2 solution permalink\" class=\"anchor\"><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>check point 1-2 solution</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// check point 1</span>\n\n<span class=\"token number\">6.</span> call stack <span class=\"token operator\">-</span><span class=\"token operator\">></span> 순서대로 보기\n\n<span class=\"token number\">8.</span> <span class=\"token function\">outer</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> 들어가자마자 x를 <span class=\"token keyword\">var</span>로 새로 선언하고<span class=\"token punctuation\">,</span>\n   <span class=\"token function\">inner</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> 호출만 시키고<span class=\"token punctuation\">,</span> 리턴이 없기 때문에 글로벌 scope만 보면 됨<span class=\"token punctuation\">.</span>\n   만약 리턴을 해준다고 해도<span class=\"token punctuation\">,</span> 대입을 새롭게 해주지 않았기 때문에<span class=\"token punctuation\">.</span>\n   그냥 <span class=\"token keyword\">var</span> x <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">var</span> x <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">outer</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">var</span> x <span class=\"token operator\">=</span> <span class=\"token number\">20</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">function</span> <span class=\"token function\">inner</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    x <span class=\"token operator\">=</span> x <span class=\"token operator\">+</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> x<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token function\">inner</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">outer</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">var</span> result <span class=\"token operator\">=</span> x<span class=\"token punctuation\">;</span>\n\n\n<span class=\"token number\">9.</span> inner의 x는 신경쓰지 않아도 되는 이유는\n<span class=\"token keyword\">var</span>로 새로 선언했기 때문에 local scope이기 때문<span class=\"token punctuation\">.</span>\n\n<span class=\"token keyword\">var</span> x <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">outer</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  x <span class=\"token operator\">=</span> <span class=\"token number\">20</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">function</span> <span class=\"token function\">inner</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">var</span> x <span class=\"token operator\">=</span> x <span class=\"token operator\">+</span> <span class=\"token number\">20</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> x<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token function\">inner</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">outer</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">var</span> result <span class=\"token operator\">=</span> x<span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// check point 2</span>\n\n<span class=\"token number\">3.</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span><span class=\"token number\">4</span> 번만 아니어도 어느정도 이해를 하고 있는 셈<span class=\"token punctuation\">.</span>\n\n<span class=\"token number\">4.</span> 클로저의 정의 <span class=\"token punctuation\">:</span>\n외부 함수의 context에 접근할 수 있는 내부 함수\n\ninner<span class=\"token punctuation\">,</span> outer<span class=\"token punctuation\">,</span> 전역</code></pre></div>\n<h2 id=\"underbar-rework\"><a href=\"#underbar-rework\" aria-label=\"underbar rework permalink\" class=\"anchor\"><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>underbar rework</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> a <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span>\na<span class=\"token punctuation\">.</span><span class=\"token function\">slice</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// []; 마지막 0은 포함되지 않기 때문에 빈 배열</span>\n\n<span class=\"token comment\">//deeply equal 과 strictly equal</span>\neql과 equal의 차이 질문\n\n<span class=\"token comment\">// array.set -> 중복값 제거해줌</span></code></pre></div>\n<p>each 와 map 차이 -> map은 무조건 리턴</p>\n<ul>\n<li>for ~ of의 경우는 <a href=\"https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Iteration_protocols#iterable\">반복가능한 객체</a> (<a href=\"https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array\"><code class=\"language-text\">Array</code></a>, <a href=\"https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Map\"><code class=\"language-text\">Map</code></a>, <a href=\"https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set\"><code class=\"language-text\">Set</code></a>, <a href=\"https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String\"><code class=\"language-text\">String</code></a>, <a href=\"https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/TypedArray\"><code class=\"language-text\">TypedArray</code></a>, <a href=\"https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/arguments\">arguments</a> 객체 등을 포함)에 대해서 사용 가능하다. Object에서는 쓸 수 없으나 아래와 같은 방법으로 사용 가능. (출처 - <a href=\"https://esdiscuss.org/topic/es6-iteration-over-object-values\">https://esdiscuss.org/topic/es6-iteration-over-object-values</a>)</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// 일반적인 for of 문</span>\n<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">let</span> value <span class=\"token keyword\">of</span> iterable<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  statement\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// object를 위한 변형</span>\n<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">let</span> <span class=\"token punctuation\">[</span>key<span class=\"token punctuation\">,</span> value<span class=\"token punctuation\">]</span> <span class=\"token keyword\">of</span> Object<span class=\"token punctuation\">.</span><span class=\"token function\">entries</span><span class=\"token punctuation\">(</span>myObj<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// do something with key and value</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"this-review\"><a href=\"#this-review\" aria-label=\"this review permalink\" class=\"anchor\"><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>this review</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">setTimeout<span class=\"token comment\">//은 기본적으로 window binding, free function invocation</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">getSalarayFromServer</span><span class=\"token punctuation\">(</span>callback<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">setTimeout</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">callback</span><span class=\"token punctuation\">(</span><span class=\"token number\">10000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span><span class=\"token number\">1000</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// Name : undefined undefined Salary 10000 나오는 문제를 해결하기 위해</span>\n<span class=\"token keyword\">function</span> <span class=\"token function\">member</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">{</span>\n        first <span class=\"token punctuation\">:</span> <span class=\"token string\">'Ingi'</span><span class=\"token punctuation\">,</span>\n        last <span class=\"token punctuation\">:</span> <span class=\"token string\">'Kim'</span><span class=\"token punctuation\">,</span>\n        age <span class=\"token punctuation\">:</span> <span class=\"token number\">40</span><span class=\"token punctuation\">,</span>\n        printDetail <span class=\"token punctuation\">:</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token comment\">//var that = this; 2번째 대안</span>\n            <span class=\"token function\">getSalarayFromServer</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span>salary<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><span class=\"token template-string\"><span class=\"token string\">`Name: </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>first<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\"> </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>last<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">`</span></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><span class=\"token template-string\"><span class=\"token string\">`Salary : </span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span>salary<span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">`</span></span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token comment\">//}.bind(this)); 1. 대안은 bind</span>\n        \t<span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">}</span>\n\n    <span class=\"token punctuation\">}</span>\n<span class=\"token comment\">// ES5의 this는 어디에서보다 어떻게 호출되는지가 중요했으나</span>\n<span class=\"token comment\">// arrow function을 사용한 함수는 어디에서 호출되는지만 고려해도 됨</span>\n<span class=\"token comment\">// arguments를 바인딩하지 않음(REST 파라미터 사용)</span>\n<span class=\"token comment\">//</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// Arrow를 안 쓰는 게 직관적인 경우도 있다.</span>\n<span class=\"token keyword\">var</span> <span class=\"token function-variable function\">Foo</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">var</span> foo <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Foo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// error</span></code></pre></div>\n<h2 id=\"strictly-equal-vs-deeply-equal\"><a href=\"#strictly-equal-vs-deeply-equal\" aria-label=\"strictly equal vs deeply equal permalink\" class=\"anchor\"><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>Strictly Equal vs Deeply equal</h2>\n<p>Strictly Equal은 === 완전히 동일한 객체를 자신과 비교</p>\n<p>Deeply Equal은 동일한 값은 갖지만 === 하지는 않은(자신과는 비교하지 않음)</p>\n<p>Object.keys</p>\n<p>Object.values</p>\n<p>[key,value] Object.entries (key 값과 value 값을 쌍으로 받아옴)</p>\n<h2 id=\"throttle-vs-debounce-예제\"><a href=\"#throttle-vs-debounce-%EC%98%88%EC%A0%9C\" aria-label=\"throttle vs debounce 예제 permalink\" class=\"anchor\"><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>throttle vs debounce 예제</h2>\n<p><a href=\"http://jsfiddle.net/missinglink/19e2r2we\">http://jsfiddle.net/missinglink/19e2r2we</a></p>\n<p><a href=\"https://medium.com/@progjh/throttle-debounce-%EA%B0%9C%EB%85%90-%EC%9E%A1%EA%B8%B0-19cea2e85a9f\">Throttle, Debounce 개념 잡기</a> (검색 키워드 throttle 예시)</p>\n<h2 id=\"그외-참조\"><a href=\"#%EA%B7%B8%EC%99%B8-%EC%B0%B8%EC%A1%B0\" aria-label=\"그외 참조 permalink\" class=\"anchor\"><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>그외 참조</h2>\n<p><a href=\"https://webisfree.com/2017-10-18/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%98%84%EC%9E%AC-%EC%8B%9C%EA%B0%84-timestamp-%EC%96%BB%EB%8A%94-%EB%B0%A9%EB%B2%95\">자바스크립트 현재시간 timestamp</a></p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\">timestamp <span class=\"token operator\">=</span> <span class=\"token operator\">+</span><span class=\"token keyword\">new</span> <span class=\"token class-name\">Date</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>","frontmatter":{"title":"Immersive Sprint - underbar review","date":"September 18, 2018"}}},"pageContext":{"isCreatedByStatefulCreatePages":false,"slug":"/til/20180918 IM08D02 underbar review/","previous":{"fields":{"slug":"/til/20180917 IM08D01 OT/"},"frontmatter":{"title":"이머시브 8기 오리엔테이션","category":"TIL"}},"next":{"fields":{"slug":"/til/20180919 IM08D03 DATA Structure Day 1 - OOP, QueueStack/"},"frontmatter":{"title":"IM08D03 DATA Structure Day 1 - OOP, QueueStack","category":"TIL"}}}}