<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>j-kyung99.log</title>
        <link>https://velog.io/</link>
        <description>프론트엔드 개발자가 되고 싶은 취준생</description>
        <lastBuildDate>Sat, 14 Dec 2024 10:00:07 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>j-kyung99.log</title>
            <url>https://velog.velcdn.com/images/j-kyung99/profile/5ac631bd-ce35-4088-a5d6-a14fb0e7c1bc/image.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. j-kyung99.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/j-kyung99" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[#5 React.js 입문]]></title>
            <link>https://velog.io/@j-kyung99/5-React.js-%EC%9E%85%EB%AC%B8</link>
            <guid>https://velog.io/@j-kyung99/5-React.js-%EC%9E%85%EB%AC%B8</guid>
            <pubDate>Sat, 14 Dec 2024 10:00:07 GMT</pubDate>
            <description><![CDATA[<h2 id="53-jsx로-ui-표현하기">#5.3 JSX로 UI 표현하기</h2>
<h3 id="jsx-주의-사항">JSX 주의 사항</h3>
<ol>
<li>중괄호 내부에는 자바스크립트 <strong>표현식</strong>만 넣을 수 있다.</li>
<li>숫자, 문자열, 배열 값만 화면에 렌더링 된다.</li>
<li>모든 태그는 닫혀있어야 한다.</li>
<li>최상위 태그는 반드시 하나여야만 한다.(적절한 최상위 태그가 없을 경우 빈 태그로 묶으면 됨)<ul>
<li>대신 빈 태그로 묶을 경우, 태그 없이 모든 요소가 흩어져 있음</li>
</ul>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[#4 React.js 개론]]></title>
            <link>https://velog.io/@j-kyung99/4-React.js-%EA%B0%9C%EB%A1%A0</link>
            <guid>https://velog.io/@j-kyung99/4-React.js-%EA%B0%9C%EB%A1%A0</guid>
            <pubDate>Wed, 04 Dec 2024 14:27:32 GMT</pubDate>
            <description><![CDATA[<h1 id="41-reactjs-소개">4.1 React.js 소개</h1>
<h2 id="reactjs란">React.js란?</h2>
<ul>
<li>Meta가 개발한 오픈소스 JavaScript 라이브러리<ul>
<li>대규모 웹 서비스의 UI를 더 편하게 개발하기 위해 만들어진 기술</li>
</ul>
</li>
</ul>
<h3 id="react의-기술적인-특징">React의 기술적인 특징</h3>
<ol>
<li>컴포넌트를 기반으로 UI를 표현한다.<ul>
<li>컴포넌트(Component): 구성요소 - 화면을 구성하는 요소, UI를 구성하는 요소를 의미</li>
</ul>
</li>
<li>화면 업데이트 구현이 쉽다.<ul>
<li>업데이트: 사용자의 행동(클릭, 드래그)에 따라 웹 페이지가 스스로 모습을 바꿔 상호작용 하는 것</li>
<li>업데이트를 위한 복잡한 동작을 직접 정의할 필요없이 특정 변수의 값을 바꾸는 것만으로도 화면을 업데이트 시킬 수 있음</li>
<li>React는 선언형 프로그래밍(과정은 생략하고 목적만 간결히 명시하는 방법)이라 구현이 쉬움</li>
<li>JavaScript와 비교했을 때, JS는 명령형 프로그래밍이라 모든 과정을 일일이 설명해야 하므로 코드가 길고 복잡한 대신, React는 목적만 깔끔하게 명시하여 코드가 간결함</li>
</ul>
</li>
<li>화면 업데이트가 빠르게 처리된다.<ul>
<li>화면 업데이트는 JavaScript가 DOM을 수정할 경우 발생</li>
<li>React는 Virtual DOM(DOM을 자바스크립트 객체로 흉내낸 것 - 일종의 복제판)을 사용하여 복제판에 먼저 반영해 봄</li>
<li>Virtual DOM이 업데이트를 모아 한번에 반영하여 DOM의 수정은 총 1회 일어남</li>
</ul>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[#3 Node.js 기초]]></title>
            <link>https://velog.io/@j-kyung99/3-Node.js-%EA%B8%B0%EC%B4%88</link>
            <guid>https://velog.io/@j-kyung99/3-Node.js-%EA%B8%B0%EC%B4%88</guid>
            <pubDate>Tue, 03 Dec 2024 13:51:43 GMT</pubDate>
            <description><![CDATA[<h1 id="31-nodejs-소개">#3.1 Node.js 소개</h1>
<h2 id="nodejs란">Node.js란?</h2>
<ul>
<li>JavaScript 실행 환경(Run Time) = 구동기</li>
<li>Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임</li>
</ul>
<h2 id="javascript-히스토리">JavaScript 히스토리</h2>
<ul>
<li>웹 브라우저의 JavaScript는 웹 페이지 내부에 필요한 아주 단순한 기능만을 개발하기 위해 만들어짐</li>
<li>매우 유연하고 작성하기 편리하게 설계, 생산성 매우 높음</li>
<li>많은 사람들이 웹 브라우저 외부에서 사용하고 싶어하고, 웹 서버로 만들고 싶어하게 됨</li>
<li>Node.js의 등장으로 JavaScript를 어디서든 사용이 가능하게 됨(웹 서버, 모바일 앱, 데스크톱 앱 등)</li>
</ul>
<h1 id="33-nodejs-사용">#3.3 Node.js 사용</h1>
<h3 id="프로젝트project">프로젝트(Project)</h3>
<ul>
<li>특정 목적을 갖는 프로그램의 단위</li>
<li>Node.js에서는 프로젝트를 패키지라고 부름</li>
</ul>
<h1 id="34-nodejs-모듈-시스템-이해">#3.4 Node.js 모듈 시스템 이해</h1>
<h2 id="모듈-시스템module-system-이란">모듈 시스템(Module System) 이란?</h2>
<ul>
<li>모듈을 다루는 시스템<ul>
<li>모듈을 생성하고, 불러오고, 사용하는 등의 모듈을 다루는 다양한 기능을 제공하는 시스템<h2 id="모듈module-이란">모듈(Module) 이란?</h2>
</li>
</ul>
</li>
<li>기능별로 나누어진 각각의 자바스크립트 파일</li>
</ul>
<h1 id="35-nodejs-라이브러리-사용">#3.5 Node.js 라이브러리 사용</h1>
<h2 id="라이브러리란">라이브러리란?</h2>
<ul>
<li>프로그램을 개발할 때 필요한 다양한 기능들을 미리 만들어 모듈화 해 놓은 것</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.13 비동기 작업 처리하기 2. Promise]]></title>
            <link>https://velog.io/@j-kyung99/2.13-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%9E%91%EC%97%85-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0-2.-Promise</link>
            <guid>https://velog.io/@j-kyung99/2.13-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%9E%91%EC%97%85-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0-2.-Promise</guid>
            <pubDate>Mon, 02 Dec 2024 13:37:12 GMT</pubDate>
            <description><![CDATA[<h2 id="promise란">Promise란?</h2>
<ul>
<li>비동기 작업을 효율적으로 처리할 수 있도록 도와주는 자바스크립트의 내장 객체</li>
<li>비동기 작업을 감싸는 객체이다.</li>
</ul>
<h3 id="효능">효능</h3>
<ul>
<li>비동기 작업 실행</li>
<li>비동기 작업 상태 관리</li>
<li>비동기 작업 결과 저장</li>
<li>비동기 작업 병렬 실행</li>
<li>비동기 작업 다시 실행</li>
<li>기타 등등...</li>
</ul>
<h3 id="비동기-작업-예시">비동기 작업 예시</h3>
<ul>
<li>setTimeout</li>
</ul>
<h3 id="promise의-3가지-상태">Promise의 3가지 상태</h3>
<blockquote>
<ol>
<li>대기(Pending): 아직 작업이 완료되지 않은 상태<ul>
<li>ex) 유튜브 영상 로딩중</li>
</ul>
</li>
<li>성공(Fulfilled): 비동기 작업이 성공적으로 마무리 된 상태<ul>
<li>ex) 시청 가능</li>
</ul>
</li>
<li>실패(Rejected): 비동기 작업이 실패한 상태<ul>
<li>ex) 시청 불가능 한 상태</li>
</ul>
</li>
</ol>
</blockquote>
<ul>
<li>대기 -&gt; 성공: 해결(resolve)<ul>
<li>ex) 영상 로딩 완료</li>
</ul>
</li>
<li>대기 -&gt; 실패: 거부(reject)<ul>
<li>ex) 영상 로딩 실패</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.11 동기와 비동기]]></title>
            <link>https://velog.io/@j-kyung99/2.11-%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0</link>
            <guid>https://velog.io/@j-kyung99/2.11-%EB%8F%99%EA%B8%B0%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0</guid>
            <pubDate>Tue, 12 Nov 2024 14:55:35 GMT</pubDate>
            <description><![CDATA[<h2 id="동기란">동기란?</h2>
<ul>
<li>여러 개의 작업을 순서대로 한 번에 하나씩 처리하는 방식</li>
<li>JavaScript는 동기적으로 코드를 실행한다</li>
</ul>
<h3 id="동기-방식에는-치명적인-단점이-존재한다">동기 방식에는 치명적인 단점이 존재한다</h3>
<h2 id="비동기란">비동기란?</h2>
<ul>
<li>동기적이지 않다는 뜻</li>
<li>작업을 순서대로 처리하지 않음</li>
</ul>
<h3 id="비동기-작업들은-자바스크립트-엔진이-아닌-web-apis에서-실행이-되므로-동시에-작업을-처리할-수-있는-것">비동기 작업들은 자바스크립트 엔진이 아닌 Web APIs에서 실행이 되므로 동시에 작업을 처리할 수 있는 것</h3>
<ul>
<li>Web APIs: 웹 브라우저가 직접 관리하는 별도의 영역</li>
</ul>
<pre><code class="language-javascript">console.log(1);

setTimeout(() =&gt; {
  console.log(2);
}, 3000);

console.log(3);</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.10 Date 객체와 날짜]]></title>
            <link>https://velog.io/@j-kyung99/2.10-Date-%EA%B0%9D%EC%B2%B4%EC%99%80-%EB%82%A0%EC%A7%9C</link>
            <guid>https://velog.io/@j-kyung99/2.10-Date-%EA%B0%9D%EC%B2%B4%EC%99%80-%EB%82%A0%EC%A7%9C</guid>
            <pubDate>Tue, 12 Nov 2024 14:34:03 GMT</pubDate>
            <description><![CDATA[<h3 id="1-date-객체를-생성하는-방법">1. Date 객체를 생성하는 방법</h3>
<pre><code class="language-javascript">let date1 = new Date(); // 생성자
let date2 = new Date(&quot;1997-01-07&quot;);</code></pre>
<h3 id="2-타임-스탬프">2. 타임 스탬프</h3>
<ul>
<li>특정 시간이 &quot;1970.01.01 00시 00분 00초&quot;(UTC)로 부터 몇 ms가 지났는지를 의미하는 숫자값<pre><code class="language-javascript">let ts1 = date1.getTime();
let date4 = new Date(ts1);</code></pre>
</li>
</ul>
<h3 id="3-시간-요소들을-추출하는-방법">3. 시간 요소들을 추출하는 방법</h3>
<pre><code class="language-javascript">let year = date1.getFullYear();
let month = date1.getMonth() + 1; // js에서는 월은 0부터 시작함
let date = date1.getDate();

let hour = date1.getHours();
let minute = date1.getMinutes();
let seconds = date1.getSeconds();</code></pre>
<h3 id="4-시간-수정하기">4. 시간 수정하기</h3>
<pre><code class="language-javascript">date1.setFullYear(2023);
date1.setMonth(2);
date1.setDate(30);
date1.setHours(23);
date1.setMinutes(59);
date1.setSeconds(59);</code></pre>
<h3 id="5-시간을-여러-포맷으로-출력하기">5. 시간을 여러 포맷으로 출력하기</h3>
<pre><code class="language-javascript">console.log(date1.toDateString()); // 시간 제외 날짜만 출력
console.log(date1.toLocaleString()); // 현지화 된 형태로 출력</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.9 배열 메서드 3. 배열 변형]]></title>
            <link>https://velog.io/@j-kyung99/2.9-%EB%B0%B0%EC%97%B4-%EB%A9%94%EC%84%9C%EB%93%9C-3.-%EB%B0%B0%EC%97%B4-%EB%B3%80%ED%98%95</link>
            <guid>https://velog.io/@j-kyung99/2.9-%EB%B0%B0%EC%97%B4-%EB%A9%94%EC%84%9C%EB%93%9C-3.-%EB%B0%B0%EC%97%B4-%EB%B3%80%ED%98%95</guid>
            <pubDate>Tue, 12 Nov 2024 14:20:10 GMT</pubDate>
            <description><![CDATA[<h2 id="5가지-배열-변형-메서드">5가지 배열 변형 메서드</h2>
<h3 id="1-filter">1. filter</h3>
<ul>
<li>기존 배열에서 조건을 만족하는 요소들만 필터링하여 새로운 배열로 반환<pre><code class="language-javascript">let arr1 = [
{ name: &quot;이정환&quot;, hobby: &quot;테니스&quot; },
{ name: &quot;김효빈&quot;, hobby: &quot;테니스&quot; },
{ name: &quot;홍길동&quot;, hobby: &quot;독서&quot; },
];

</code></pre>
</li>
</ul>
<p>const tennisPeople = arr1.filter((item) =&gt; item.hobby === &quot;테니스&quot;);</p>
<pre><code>### 2. map
- 배열의 모든 요소를 순회하면서, 각각 콜백함수를 실행하고 그 결과값들을 모아서 새로운 배열로 변환
```javascript
let arr2 = [1, 2, 3];
const mapResult1 = arr2.map((item, idx, arr) =&gt; {
  return item * 2;
});

let names = arr1.map((item) =&gt; item.name);</code></pre><h3 id="3-sort">3. sort</h3>
<ul>
<li>배열을 사전순으로 정렬하는 메서드<pre><code class="language-javascript">let arr3 = [&quot;b&quot;, &quot;a&quot;, &quot;c&quot;];
arr3.sort();
</code></pre>
</li>
</ul>
<p>let arr4 = [10, 3, 5];
arr4.sort((a, b) =&gt; a - b);</p>
<pre><code>### 4. toSorted
- 정렬된 새로운 배열을 반환하는 메서드
```javascript
let arr5 = [&quot;c&quot;, &quot;a&quot;, &quot;b&quot;];
const sorted = arr5.toSorted();</code></pre><h3 id="5-join">5. join</h3>
<ul>
<li>배열의 모든 요소를 하나의 문자열로 합쳐서 반환하는 메서드<pre><code class="language-javascript">let arr6 = [&quot;hi&quot;, &quot;im&quot;, &quot;winterlood&quot;];
const joined = arr6.join(&quot; &quot;);</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.8 배열 메서드 2 - 순회와 탐색]]></title>
            <link>https://velog.io/@j-kyung99/2.8-%EB%B0%B0%EC%97%B4-%EB%A9%94%EC%84%9C%EB%93%9C-2-%EC%88%9C%ED%9A%8C%EC%99%80-%ED%83%90%EC%83%89</link>
            <guid>https://velog.io/@j-kyung99/2.8-%EB%B0%B0%EC%97%B4-%EB%A9%94%EC%84%9C%EB%93%9C-2-%EC%88%9C%ED%9A%8C%EC%99%80-%ED%83%90%EC%83%89</guid>
            <pubDate>Wed, 09 Oct 2024 08:42:25 GMT</pubDate>
            <description><![CDATA[<h2 id="5가지-요소-순회-및-탐색-메서드">5가지 요소 순회 및 탐색 메서드</h2>
<h3 id="1-foreach">1. forEach</h3>
<ul>
<li>모든 요소를 순회하면서, 각각의 요소에 특정 동작을 수행시키는 메서드<pre><code class="language-javascript">let arr1 = [1, 2, 3];
arr1.forEach(function (item, idx, arr) {
// console.log(idx, item * 2);
});

</code></pre>
</li>
</ul>
<p>let doubleArr = [];</p>
<p>arr1.forEach((item) =&gt; {
  doubleArr.push(item * 2);
});</p>
<pre><code>
### 2. includes
- 배열에 특정 요소가 있는지 확인하는 메서드
```javascript
let arr2 = [1, 2, 3];
let isInclude = arr2.includes(3);</code></pre><h3 id="3-indexof">3. indexOf</h3>
<ul>
<li>특정 요소의 인덱스(위치)를 찾아서 반환하는 메서드</li>
<li>얕은 비교로만 진행하기 때문에 객체 값은 찾지 못함<pre><code class="language-javascript">let arr3 = [1, 2, 3];
let index = arr3.indexOf(2);
// 존재하지 않으면 -1 반환, 같은 값이 여러개 있을 경우 제일 앞 요소의 인덱스 반환</code></pre>
</li>
</ul>
<h3 id="4-findindex">4. findIndex</h3>
<ul>
<li>모든 요소를 순회하면서, 콜백함수를 만족하는</li>
<li>특정 요소의 인덱스(위치)를 반환하는 메서드</li>
<li>콜백함수를 이용하여 진행하기 때문에 복잡한 객체 값도 조건식만 잘 만들면 찾을 수 있음<pre><code class="language-javascript">let arr4 = [1, 2, 3];
const findedIndex = arr4.findIndex((item) =&gt; item === 999);</code></pre>
</li>
</ul>
<h3 id="5-find">5. find</h3>
<ul>
<li>모든 요소를 순회하면서 콜백함수를 만족하는 요소를 찾는데, 요소를 그대로 반환<pre><code class="language-javascript">let arr5 = [{ name: &quot;월레스&quot; }, { name: &quot;그로밋&quot; }];
const finded = arr5.find((item) =&gt; item.name === &quot;그로밋&quot;);</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.7 배열 메서드 1 - 요소 조작]]></title>
            <link>https://velog.io/@j-kyung99/2.7-%EB%B0%B0%EC%97%B4-%EB%A9%94%EC%84%9C%EB%93%9C-1-%EC%9A%94%EC%86%8C-%EC%A1%B0%EC%9E%91</link>
            <guid>https://velog.io/@j-kyung99/2.7-%EB%B0%B0%EC%97%B4-%EB%A9%94%EC%84%9C%EB%93%9C-1-%EC%9A%94%EC%86%8C-%EC%A1%B0%EC%9E%91</guid>
            <pubDate>Wed, 09 Oct 2024 07:50:34 GMT</pubDate>
            <description><![CDATA[<h2 id="6가지의-요소-조작-메서드">6가지의 요소 조작 메서드</h2>
<h3 id="1-push">1. push</h3>
<ul>
<li>배열의 맨 뒤에 새로운 요소를 추가하는 메서드<pre><code class="language-javascript">let arr1 = [1, 2, 3];
const newLength = arr1.push(4, 5, 6, 7); // 추가된 배열의 총 길이를 알려줌</code></pre>
<h3 id="2-pop">2. pop</h3>
</li>
<li>배열의 맨 뒤에 있는 요소를 제거하고, 반환<pre><code class="language-javascript">let arr2 = [1, 2, 3];
const poppedItem = arr2.pop();</code></pre>
</li>
</ul>
<h3 id="3-shift">3. shift</h3>
<ul>
<li>배열의 맨 앞에 있는 요소를 제거, 반환<pre><code class="language-javascript">let arr3 = [1, 2, 3];
const shiftedItem = arr3.shift();</code></pre>
</li>
</ul>
<h3 id="4-unshift">4. unshift</h3>
<ul>
<li>배열의 맨 앞에 새로운 요소를 추가하는 메서드<pre><code class="language-javascript">let arr4 = [1, 2, 3];
const newLength2 = arr4.unshift(0); // 추가된 배열의 총 길이를 알려줌</code></pre>
</li>
</ul>
<h3 id="5-slice">5. slice</h3>
<ul>
<li>마치 가위처럼, 배열의 특정 범위를 찾아내서 새로운 배열로 반환<pre><code class="language-javascript">let arr5 = [1, 2, 3, 4, 5];
let sliced = arr5.slice(2); 
// 자르기 시작할 요소 번호, 자르기 끝낼 요소 번호+1(마지막이면 두번째 인수는 생략 가능)
let sliced2 = arr5.slice(-3);
// 뒤에서부터 자르는 방법(잘라낼 갯수)</code></pre>
</li>
</ul>
<h3 id="6-concat">6. concat</h3>
<ul>
<li>두개의 서로 다른 배열을 이어 붙여서 새로운 배열을 반환<pre><code class="language-javascript">let arr6 = [1, 2];
let arr7 = [3, 4];
let concatedArr = arr6.concat(arr7);</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.6 반복문으로 배열과 객체 순회하기]]></title>
            <link>https://velog.io/@j-kyung99/2.6-%EB%B0%98%EB%B3%B5%EB%AC%B8%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%97%B4%EA%B3%BC-%EA%B0%9D%EC%B2%B4-%EC%88%9C%ED%9A%8C%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@j-kyung99/2.6-%EB%B0%98%EB%B3%B5%EB%AC%B8%EC%9C%BC%EB%A1%9C-%EB%B0%B0%EC%97%B4%EA%B3%BC-%EA%B0%9D%EC%B2%B4-%EC%88%9C%ED%9A%8C%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sun, 06 Oct 2024 09:02:23 GMT</pubDate>
            <description><![CDATA[<h2 id="순회iteration란">순회(Iteration)란?</h2>
<ul>
<li>배열, 객체에 저장된 여러개의 값에 순서대로 하나씩 접근하는 것을 말함</li>
</ul>
<pre><code class="language-javascript">// ex) 배열 순회
let numbers = [1, 2, 3];

// ex) 객체 순회
let person = {
  name: &quot;갱&quot;,
  age: 27,
  hobby: &quot;배드민턴&quot;,
};</code></pre>
<h3 id="반복문을-이용한-배열-객체-순회">반복문을 이용한 배열, 객체 순회</h3>
<pre><code class="language-javascript">for (let value of numbers) {
  console.log(value);
}

for (let key in Object.keys(person)) {
  console.log(key);
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.5 원시타입 VS 객체타입]]></title>
            <link>https://velog.io/@j-kyung99/2.5-%EC%9B%90%EC%8B%9C%ED%83%80%EC%9E%85-VS-%EA%B0%9D%EC%B2%B4%ED%83%80%EC%9E%85</link>
            <guid>https://velog.io/@j-kyung99/2.5-%EC%9B%90%EC%8B%9C%ED%83%80%EC%9E%85-VS-%EA%B0%9D%EC%B2%B4%ED%83%80%EC%9E%85</guid>
            <pubDate>Sun, 06 Oct 2024 08:46:20 GMT</pubDate>
            <description><![CDATA[<h2 id="원시타입과-객체타입으로-나누는-이유">원시타입과 객체타입으로 나누는 이유?</h2>
<ul>
<li>원시타입과 객체타입은 값이 저장되거나 복사되는 과정이 서로 다르기 때문</li>
</ul>
<h3 id="원시-타입불변값">원시 타입(=불변값)</h3>
<ul>
<li>Number, String, Boolean 등</li>
<li>값 자체로써 변수에 저장되고 복사된다</li>
<li>실제 메모리의 값은 변경되지 않음</li>
</ul>
<h3 id="객체-타입가변값">객체 타입(=가변값)</h3>
<ul>
<li>Object, Array, Function 등</li>
<li>참조값을 통해 변수에 저장되고 복사된다</li>
<li>실제 메모리의 값이 변경된다</li>
</ul>
<h3 id="객체-타입-주의사항">객체 타입 주의사항</h3>
<ol>
<li>의도치 않게 값이 수정될 수 있다.</li>
<li>객체간의 비교는 기본적으로 참조값을 기준으로 이루어진다.</li>
<li>배열과 함수도 사실 객체이다.</li>
</ol>
<p>얕은 복사</p>
<ul>
<li>객체의 참조값을 복사</li>
<li>원본 객체가 수정될 수 있어 위험</li>
</ul>
<p>깊은 복사</p>
<ul>
<li>새로운 객체를 생성하면서 프로퍼티만 따로 복사</li>
<li>원본 객체가 수정될 일이 없어 안전</li>
</ul>
<p>얕은 비교</p>
<ul>
<li>참조값을 기준으로 비교</li>
</ul>
<p>깊은 비교</p>
<ul>
<li>객체를 문자열로 변환하여 비교</li>
<li>JSON.stringify 등의 내장 함수를 이용해야 함</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.3 구조 분해 할당]]></title>
            <link>https://velog.io/@j-kyung99/2.3-%EA%B5%AC%EC%A1%B0-%EB%B6%84%ED%95%B4-%ED%95%A0%EB%8B%B9</link>
            <guid>https://velog.io/@j-kyung99/2.3-%EA%B5%AC%EC%A1%B0-%EB%B6%84%ED%95%B4-%ED%95%A0%EB%8B%B9</guid>
            <pubDate>Sat, 05 Oct 2024 05:56:16 GMT</pubDate>
            <description><![CDATA[<h2 id="구조-분해-할당이란">구조 분해 할당이란?</h2>
<ul>
<li>배열이나 객체에 저장된 여러 개의 값들을 분해해서 각각 다른 변수에 할당하는 방법</li>
</ul>
<pre><code class="language-javascript">let arr = [1, 2, 3];

let [one, two, three] = arr;
console.log(one, two, three);
// arr에 3이 없다면 그냥 앞에서부터 1이랑 2만 차례대로 할당
// console에 four를 추가한다고 가정했을 때, arr에는 4가 없으므로 undefined 출력
// 값이 모자랄 때 추가할 수 있게 기본값 설정도 가능(arr에 four = 4를 추가하는 식)</code></pre>
<h3 id="객체-분해-할당-시-다른-명칭으로-부르고-싶다면-해당-객체에-콜론-후-별칭-적기">객체 분해 할당 시 다른 명칭으로 부르고 싶다면 해당 객체에 콜론 후 별칭 적기</h3>
<pre><code class="language-javascript">let person = {
  name: &quot;갱&quot;,
  age: 27,
  hobby: &quot;배드민턴&quot;,
};

let {
  age: myAge, // 이런 방식으로 별칭 작성하면 됨
  hobby,
  name,
} = person;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.2 단락 평가]]></title>
            <link>https://velog.io/@j-kyung99/2.2-%EB%8B%A8%EB%9D%BD-%ED%8F%89%EA%B0%80</link>
            <guid>https://velog.io/@j-kyung99/2.2-%EB%8B%A8%EB%9D%BD-%ED%8F%89%EA%B0%80</guid>
            <pubDate>Sat, 05 Oct 2024 05:43:51 GMT</pubDate>
            <description><![CDATA[<h2 id="단락-평가short-circuit-evaluation이란">단락 평가(Short-circuit Evaluation)이란?</h2>
<pre><code class="language-javascript">let varA = false;
let varB = true;

//AND 연산자
console.log(varA &amp;&amp; varB);

//OR 연산자
console.log(varB || varA);</code></pre>
<ul>
<li>논리 연산식에서 첫 번째 피연산자 값 만으로도 연산의 결과를 확정할 수 있다면 두번째 연산에는 접근조차 하지 않음</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[#2.1 Truthy와 Falsy]]></title>
            <link>https://velog.io/@j-kyung99/2.1-Truthy%EC%99%80-Falsy</link>
            <guid>https://velog.io/@j-kyung99/2.1-Truthy%EC%99%80-Falsy</guid>
            <pubDate>Sat, 05 Oct 2024 05:26:19 GMT</pubDate>
            <description><![CDATA[<h3 id="javascript에서는-참-거짓이-아닌-값도-참-거짓으로-평가한다">JavaScript에서는 참, 거짓이 아닌 값도 참, 거짓으로 평가한다.</h3>
<h2 id="truthy--falsy란">Truthy &amp; Falsy란?</h2>
<ul>
<li>참이나 거짓을 의미하지 않는 값도, 조건문 내에서 참이나 거짓으로 평가하는 특징</li>
<li>JavaScript의 모든 값은 Truthy 하거나 Falsy 함<ul>
<li>이를 이용하면 조건문을 간결하게 만들 수 있음</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[#1.15-1.16 객체]]></title>
            <link>https://velog.io/@j-kyung99/1.15-1.16-%EA%B0%9D%EC%B2%B4</link>
            <guid>https://velog.io/@j-kyung99/1.15-1.16-%EA%B0%9D%EC%B2%B4</guid>
            <pubDate>Sat, 28 Sep 2024 02:27:50 GMT</pubDate>
            <description><![CDATA[<h2 id="객체object란">객체(Object)란?</h2>
<ul>
<li>원시 타입이 아닌 객체 타입의 자료형</li>
<li>여러가지 값을 동시에 저장할 수 있는 자료형을 의미<pre><code class="language-javascript">let person = {
name: &quot;티니핑&quot;,
nickname: &quot;ping&quot;,
age: 5,
location: &quot;서울&quot;,
};</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[
#1.14 스코프]]></title>
            <link>https://velog.io/@j-kyung99/1.14-%EC%8A%A4%EC%BD%94%ED%94%84</link>
            <guid>https://velog.io/@j-kyung99/1.14-%EC%8A%A4%EC%BD%94%ED%94%84</guid>
            <pubDate>Fri, 27 Sep 2024 12:25:07 GMT</pubDate>
            <description><![CDATA[<h2 id="스코프scope란">스코프(Scope)란?</h2>
<ul>
<li>우리말로 &quot;범위&quot;를 뜻함</li>
<li>변수나 함수에 접근하거나 호출할 수 있는 범위를 말함</li>
</ul>
<pre><code class="language-javascript">function funcA() {
  let a = 1; // a 접근 가능 영역
} 

console.log(a); // a 접근 불가능 영역</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[#1.13 콜백함수]]></title>
            <link>https://velog.io/@j-kyung99/1.13-%EC%BD%9C%EB%B0%B1%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@j-kyung99/1.13-%EC%BD%9C%EB%B0%B1%ED%95%A8%EC%88%98</guid>
            <pubDate>Fri, 27 Sep 2024 12:19:07 GMT</pubDate>
            <description><![CDATA[<h2 id="콜백-함수callback-function란">콜백 함수(Callback Function)란?</h2>
<ul>
<li>자신이 아닌 다른 함수에, 인수로써 전달된 함수를 의미 함<pre><code class="language-javascript">function main(value) {
value();
}
</code></pre>
</li>
</ul>
<p>function sub() {
  console.log(&quot;sub&quot;);
}</p>
<p>main(sub); // console창에 sub 출력
```</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[#1.9-1.10 조건문 & 반복문]]></title>
            <link>https://velog.io/@j-kyung99/1.9-1.10-%EC%A1%B0%EA%B1%B4%EB%AC%B8-%EB%B0%98%EB%B3%B5%EB%AC%B8</link>
            <guid>https://velog.io/@j-kyung99/1.9-1.10-%EC%A1%B0%EA%B1%B4%EB%AC%B8-%EB%B0%98%EB%B3%B5%EB%AC%B8</guid>
            <pubDate>Thu, 26 Sep 2024 11:21:38 GMT</pubDate>
            <description><![CDATA[<h2 id="조건문conditional-statement-이란">조건문(Conditional Statement) 이란?</h2>
<ul>
<li>특정 조건을 만족했을 때에만 실행되는 코드를 작성하기 위한 문법</li>
<li>대표적으로 if, switch 조건문이 존재함</li>
</ul>
<h2 id="반복문loop-iteration">반복문(Loop, Iteration)</h2>
<ul>
<li>어떠한 동작을 반복해서 수행할 수 있도록 만들어 주는 문법<pre><code class="language-javascript">for (초기식; 조건식; 증감식) {
반복할 무언가
}</code></pre>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[#1.7-1.8 연산자]]></title>
            <link>https://velog.io/@j-kyung99/1.7-1.8-%EC%97%B0%EC%82%B0%EC%9E%90</link>
            <guid>https://velog.io/@j-kyung99/1.7-1.8-%EC%97%B0%EC%82%B0%EC%9E%90</guid>
            <pubDate>Wed, 25 Sep 2024 12:01:18 GMT</pubDate>
            <description><![CDATA[<h2 id="연산자operator란">연산자(Operator)란?</h2>
<ul>
<li>프로그래밍에서의 다양한 연산을 위한 <strong>기호, 키워드</strong>를 말함<ul>
<li>덧셈 연산자 +<ul>
<li>곱셈 연산자 *</li>
<li>뺄셈 연산자 -</li>
<li>나눗셈 연산자 /</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[#1.6 형 변환]]></title>
            <link>https://velog.io/@j-kyung99/1.6-%ED%98%95-%EB%B3%80%ED%99%98</link>
            <guid>https://velog.io/@j-kyung99/1.6-%ED%98%95-%EB%B3%80%ED%99%98</guid>
            <pubDate>Tue, 24 Sep 2024 12:31:52 GMT</pubDate>
            <description><![CDATA[<h2 id="형-변환type-casting">형 변환(Type Casting)</h2>
<ul>
<li>어떤 값의 타입을 다른 타입으로 변경하는 것을 말함</li>
</ul>
<h3 id="묵시적-형-변환암묵적-형-변환">묵시적 형 변환(암묵적 형 변환)</h3>
<ul>
<li>개발자가 직접 설정하지 않아도 알아서 자바스크립트 엔진이 형 변환 하는 것을 말함</li>
</ul>
<h3 id="명시적-형-변환">명시적 형 변환</h3>
<ul>
<li>개발자가 직접 함수 등을 이용해 형 변환을 일으킴</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>