<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>zzang_sewoo.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 29 Jul 2025 02:53:35 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>zzang_sewoo.log</title>
            <url>https://velog.velcdn.com/images/zzang_sera/profile/82afaa42-5703-42fb-9c5e-4774f241c5fa/image.JPG</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. zzang_sewoo.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/zzang_sera" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[expo로 react native 시작하기]]></title>
            <link>https://velog.io/@zzang_sera/expo%EB%A1%9C-react-native-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@zzang_sera/expo%EB%A1%9C-react-native-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 29 Jul 2025 02:53:35 GMT</pubDate>
            <description><![CDATA[<h3 id="tmi-일상-공유">tmi 일상 공유</h3>
<p>안녕하세요. 졸업을 위해 새로운 프로젝트를 시작했습니다. 다소 늦은 감이 있어서 졸업을 할 수 있을지는 모르겠지만,, 해 내야죠. 정처기 실기 2회차도 결과를 기다리는 중입니다. 이번엔 난이도가 쉬워서,, 붙길 기도중임미다,, 흑 그만 볼래,,</p>
<h3 id="프로젝트-소개아주-간단한">프로젝트 소개(아주 간단한)</h3>
<ul>
<li>교통약자를 위한 지하철 역사 안내 앱입니다.</li>
<li>reactnative(RN)+expo, firebase 정도 사용할 예정입니다.</li>
</ul>
<p>분명 학교를 4년 다녔는데 개발 능력은 1학년 때와 다르지 않아서,, 많이 해맬 예정이니 혹시라도 보고 답답하거나 정보가 있으시면 댓글로 조언 부탁드림미다.ㅜ</p>
<p>expo를 공식 안내를 보면서 따라하는 중입니다.
<a href="https://docs.expo.dev/">https://docs.expo.dev/</a></p>
<h3 id="expo-설치-명령어">expo 설치 명령어</h3>
<pre><code>npx create-expo-app@latest</code></pre><h3 id="설치-옵션---template설정안하면-기본으로-됨">설치 옵션 --template(설정안하면 기본으로 됨.)</h3>
<pre><code>--template default: 기본 템플릿, Expo CLI, Expo Router 라이브러리, TypeScript 구성 활성화 등 권장 도구가 포함
--blank: 최소한의 기능만 설치
--blank-typescript: ts만 활성화된 빈 템플릿
--tabs: expo router와 ts를 사용하여 파일기반 라우팅 설치 구성</code></pre><h3 id="설치-후-실행">설치 후 실행</h3>
<p>cd 파일명</p>
<pre><code>npx expo start</code></pre><p>실행되면 QR 뜸 -&gt; 휴대폰으로 찍으면 화면 실행 가능!</p>
<h3 id="추가">추가</h3>
<p>파일 구조를 어떻게 구성하면 좋을 지 찾아보는 중입니다. react와 비슷할 거 같아서 rn을 선택했는데,,, 아직 많이 찾아봐야 할 것 같습니다ㅜ</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[혼공JS]4주차 CH05. 함수]]></title>
            <link>https://velog.io/@zzang_sera/%ED%98%BC%EA%B3%B5JS4%EC%A3%BC%EC%B0%A8-CH05.-%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@zzang_sera/%ED%98%BC%EA%B3%B5JS4%EC%A3%BC%EC%B0%A8-CH05.-%ED%95%A8%EC%88%98</guid>
            <pubDate>Sun, 09 Feb 2025 14:34:57 GMT</pubDate>
            <description><![CDATA[<p>안녕하새우🍤 이번주는 내용 정리할 시간이 없네요,,,어찌저찌 1회독은 했는데요. 중요한 파트인 만큼 시간 날 때마다 2회독 하면서 조금씩 내용 추가해 보겠습니다..</p>
<p>...
진도: chater 05
✅기본 숙제(필수): p.202 &lt;윤년을 확인하는 함수 만들기&gt; 예제를 실행하여 2022년이 윤년인지 확인하는 결과 인증하기</p>
<pre><code class="language-JavaScript">&lt;script&gt;
        function isLeapYear(year){
            return(year % 4 === 0) &amp;&amp; (year % 100 !== 0) || (year % 400 === 0) 
        }
        const year = Number(prompt(&quot;연도를 입력하세요&quot;, &quot;연도&quot;))
        if(!isLeapYear(year)){ //if의 조건문이 true일 때 if문 실행.
            alert(`${year}년은 윤년이 아닙니다.`)
        } else {
            alert(`${year}년은 윤년입니다.`)
        }
 &lt;/script&gt;</code></pre>
<p><img src="https://velog.velcdn.com/images/zzang_sera/post/01183f62-cccc-48dc-9934-bb1404216c8c/image.png" alt="">
<img src="https://velog.velcdn.com/images/zzang_sera/post/8cd103b5-271c-4bdc-9989-b49c3f7435fc/image.png" alt=""></p>
<p>✅추가숙제(선택): p.240 확인문제 1번 풀고, 풀이과정 설명하기</p>
<ol>
<li><p>filter 함수의 콜백 함수 부분을 채워서 1) 홀수만 추출 2) 100 이하의 수만 추출, 3) 5로 나눈 나머지가 0인 수만 추출해주세요. 그리고 코드의 실행 결과를 적어보세요.</p>
<pre><code class="language-JavaScript">&lt;script&gt;
     let numbers = [273, 25, 75, 52, 103, 32, 57, 24, 76]
     numbers = numbers.filter((value) =&gt; value % 2 !== 0)
     numbers = numbers.filter((value) =&gt; value &lt;= 100)
     numbers = numbers.filter((value) =&gt; value % 5 === 0)

     console.log(numbers)
 &lt;/script&gt;
//실행 결과
[25, 75]</code></pre>
<p>numbers에서 filter함수로 1~3번 조건을 만족하는 것만 추출, 화살표 함수를 활용해서 익명함수로 간단하게 만듦.</p>
</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[[혼공JS]3주차 CH04. 반복문
]]></title>
            <link>https://velog.io/@zzang_sera/%ED%98%BC%EA%B3%B5JS3%EC%A3%BC%EC%B0%A8-CH04.-%EB%B0%98%EB%B3%B5%EB%AC%B8</link>
            <guid>https://velog.io/@zzang_sera/%ED%98%BC%EA%B3%B5JS3%EC%A3%BC%EC%B0%A8-CH04.-%EB%B0%98%EB%B3%B5%EB%AC%B8</guid>
            <pubDate>Wed, 29 Jan 2025 16:08:42 GMT</pubDate>
            <description><![CDATA[<p>안녕하새우🍤 벌써 혼공학습단 3주차라니,, 시간이 참 빠른 것 같아요. 2025년의 첫 달도 정신없이 지나가고 있어요. 요즘은 하루하루 흘러가는 게 너무 아까워요. 할 일하고 이제 좀 놀아볼까,,,? 하면 잘 시간이라닝 조금 더 효율적으로 살아야 될 것 같아용. 
다들 연 초에 세운 목표 잘 지켜나가고 계신가용? 저는 계란말이로 시작했지만 스크램블이 되는 저의 요리같은 삶을 살고 있답니다.. 호호 그래도 같은 달걀이니까 괜찮아용. 그럼 다들 이번주도 화이팅하새우❗
<img src="https://velog.velcdn.com/images/zzang_sera/post/f5d15972-8263-4ccc-91d8-5bb9ac06e8e9/image.png" alt=""></p>
<hr>
<p>✅ 진도: chater 04
✅ 기본숙제(필수): 비파괴적 처리와 파괴적 처리의 의미와 장단점 설명하기
✅ 추가 숙제(선택): p. 173 확인문제 3번 문제 풀고, 풀이 과정 설명하기</p>
<hr>
<h1 id="04-1-배열">04-1. 배열</h1>
<h3 id="--배열-여러-개의-변수를-한-번에-선언해-다룰-수-있는-자료형여러-자료를-묶어-활용-가능">- 배열: 여러 개의 변수를 한 번에 선언해 다룰 수 있는 자료형(여러 자료를 묶어 활용 가능)</h3>
<blockquote>
<p>const 배열명 = [요소, 요소, ... ,요소]</p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;
const array = [273, &#39;string&#39;, true, function( ) { }, {}, [273, 103]] 
//배열 안에 숫자, 문자열, boolean, 함수, 다른 배열,, 등을 넣을 수 있음.
&lt;/script&gt;</code></pre>
<h3 id="--배열-요소에-접근-하는-방법-인덱스-활용">- 배열 요소에 접근 하는 방법: <code>인덱스</code> 활용</h3>
<blockquote>
<p><span style="color:yellowgreen"> 배열 </span>[<span style="color:yellowgreen">인덱스</span>]</p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;
const numbers = [273, 52, 103, 32]
&lt;/script&gt;
&gt; numbers[0] //콘솔입력
273//출력
&gt; numbers[1+1]
103</code></pre>
<h3 id="--배열-요소-개수-확인--length-속성-사용">- 배열 요소 개수 확인 : <code>length</code> 속성 사용</h3>
<blockquote>
<p><span style="color:yellowgreen">배열</span>.length</p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;
const fruits = [&#39;배&#39;, &#39;사과&#39;, &#39;키위&#39;, &#39;바나나&#39;]
&lt;/script&gt;
&gt; fruits.length //콘솔 입력
4 //콘솔 출력
&gt;fruits[fruits.length - 1]
&#39;바나나&#39;</code></pre>
<h3 id="--배열-뒷부분에-요소-추가">- 배열 뒷부분에 요소 추가</h3>
<ol>
<li><code>push()</code> 메소드<blockquote>
<p><span style="color:yellowgreen">배열</span>.push(<span style="color:yellowgreen">요소</span>)</p>
</blockquote>
</li>
</ol>
<pre><code class="language-JavaScript">&lt;script&gt;
const todos = [&#39;혼공단&#39;, &#39;동아리&#39;, &#39;프젝&#39;, &#39;정처기&#39;]
&lt;/script&gt;
&gt; todos.push(&#39;중국어 공부&#39;) //콘솔 입력
5 //push()메소드로 요소가 추가된 후의 요소 개수 출력됨.</code></pre>
<ol start="2">
<li><code>인덱스</code> 사용<pre><code class="language-JavaScript">&lt;script&gt;
const apple = [&#39;ipone&#39;, &#39;ipad&#39;, &#39;appleWatch&#39;]
&lt;/script&gt;
&gt; apple[apple.length] = &#39;airpod&#39;//배열의 마지막 위치에 추가
&gt; apple[10] = &#39;ipod&#39; //특정 인덱스에 추가, apple[4]~[9]: empty</code></pre>
</li>
</ol>
<p>..
🤔 배열.push()를 배우면서 두가지 궁금증이 생겨서 찾아봤새우
(제 정보가 틀렸다면,, 댓글 부탁함미다.)</p>
<ol>
<li><p><code>스택의 push</code>와 <code>배열의 push</code>는 같은 건가,,?
=&gt; push()의 기능 자체는 동일하지만 스택과 배열에 차이점이 있음</p>
<ul>
<li>스택은 LIFO 규칙을 따르는 데이터를 관리하는 자료 구조</li>
<li>배열은 일반적인 데이터를 관리하는 자료구조 
=&gt; 배열이 더 넓은 범위의 개념</li>
</ul>
</li>
<li><p><code>const</code>는 상수를 선언할 때 사용하는 명령어인데 const로 선언한 배열에 요소를 추가할 수 있는 이유가 무엇일까?
=&gt; <code>const</code>: 변수 자체의 변경은 제한하지만, 객체 내부 요소의 변경은 허용함.(객체의 속성이나 요소 변경 허용)
=&gt; <code>const</code> : 배열이 저장된 메모리 주소(참조)의 변경 막음. but, 내부 요소 변경 허용//주소 내의 값 변경은 허용함.</p>
</li>
</ol>
<p>..</p>
<h3 id="--배열-요소-제거">- 배열 요소 제거</h3>
<ol>
<li>인덱스 기반 제거</li>
</ol>
<ul>
<li><code>splice()</code> : 접합 // 특정 인덱스부터 n개의 요소를 제거한 후 합침.<blockquote>
<p><span style="color:yellowgreen">배열</span>.splice(<span style="color:yellowgreen">인덱스</span>, <span style="color:yellowgreen">제거할 요소의 개수</span>)</p>
</blockquote>
</li>
</ul>
<pre><code class="language-JavaScript">&lt;script&gt;
const apple = [&#39;ipone&#39;, &#39;ipad&#39;, &#39;appleWatch&#39;]

apple.splice(1,1)//&#39;ipad&#39;제거: 배열의 1번째 인덱스로부터 1개 요소를 제거
&lt;/script&gt;</code></pre>
<ol start="2">
<li>값 기반 제거 </li>
</ol>
<ul>
<li><code>indexOf</code>: 배열 내부의 특정 값의 위치를 찾음, 요소가 있을 경우 인덱스를 리턴하고 없을 경우 &#39;-1&#39; 리턴</li>
</ul>
<blockquote>
<p>&gt; const <span style="color:yellowgreen">인덱스</span> = <span style="color:yellowgreen">배열</span>.indexOf(<span style="color:yellowgreen">요소</span>)
&gt; <span style="color:yellowgreen">배열</span>.splice(<span style="color:yellowgreen">인덱스</span>, 1)</p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;
const apple = [&#39;ipone&#39;, &#39;ipad&#39;, &#39;appleWatch&#39;]
const index = apple.indexOf(&#39;ipad&#39;)//&#39;ipad&#39;의 인덱스: 1

apple.splice(index, 1)//&#39;ipad&#39;제거: 배열의 1번째 인덱스로부터 1개 요소를 제거
apple.indexOf(&#39;ipad&#39;)//-1 출력(ipad가 없으니까.)

&lt;/script&gt;</code></pre>
<p>+ 특정 문자열에서도 <code>indexOf()</code>메소드 사용 가능.</p>
<ul>
<li>찾는 글자의 앞글자의 위치 인덱스를 출력 <pre><code class="language-JavaScript">&lt;script&gt;
const apple = &#39;원숭이 엉덩이는 빨개 빨가면 사과 사과는 맛있어&#39;
apple.indexOf(&#39;빨개&#39;)//9 출력, 띄어쓰기 주의
</code></pre>
</li>
</ul>
<p></script></p>
<pre><code>
3. 배열 내부에서 특정 값을 가진 요소 모두 제거
- `filter()` 메소드 사용

``` JavaScript
&lt;script&gt;
const apple = [&#39;원숭이&#39;, &#39;엉덩이는&#39;, &#39;빨개&#39;, &#39;빨가면&#39;, &#39;사과&#39;, &#39;사과&#39;, &#39;맛있어&#39;]
apple.filter((item)=&gt; item !== &#39;사과&#39; )
// 출력: (5) [&#39;원숭이&#39;, &#39;엉덩이는&#39;, &#39;빨개&#39;, &#39;빨가면&#39;, &#39;맛있어&#39;]

&lt;/script&gt;

+ 콜백함수: 다른 함수의 인자로 전달되어 실행되는 함수
\- filter()가 배열의 각 요소를 순회하며 콜백함수 실행
\- 콜백 함수가 true를 반환하는 요소만 새로운 배열에 포함
\- filter()는 원본 배열의 변경이 아닌 새로운 배열의 반환임.</code></pre><h3 id="--배열의-특정-위치에-요소-추가">- 배열의 특정 위치에 요소 추가</h3>
<blockquote>
<p><span style="color:yellowgreen">배열</span>.splice.(<span style="color:yellowgreen">인덱스</span>, 0, <span style="color:yellowgreen">요소</span>) 
// 0: 아무것도 제거하지 않음, 요소: 추가하고 싶은 요소 입력</p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;
const apple = [&#39;원숭이&#39;, &#39;엉덩이는&#39;, &#39;빨가면&#39;, &#39;사과&#39;, &#39;사과&#39;, &#39;맛있어&#39;]
apple.splice(2, 0, &#39;빨개&#39;) //2번째 인덱스에 빨개 추가

&lt;/script&gt;</code></pre>
<p>🌟splice()가 접합이라는 점을 잘 활용하기.</p>
<hr>
<p>✅ 기본숙제(필수): 비파괴적 처리와 파괴적 처리의 의미와 장단점 설명하기</p>
<h3 id="자료의-비파괴적-처리와-파괴적-처리">자료의 비파괴적 처리와 파괴적 처리</h3>
<table>
<thead>
<tr>
<th></th>
<th>비파괴적 처리</th>
<th>파괴적 처리</th>
</tr>
</thead>
<tbody><tr>
<td>정의</td>
<td>처리 후 원본 내용이 변경되지 않음.</td>
<td>처리 후 원본 내용이 변경됨.</td>
</tr>
<tr>
<td>장점</td>
<td>원본을 보존할 수 있음.</td>
<td>메모리를 절약할 수 있음.</td>
</tr>
<tr>
<td>단점</td>
<td>메모리 부족 문제가 생김.</td>
<td>자료 보호가 어려움.</td>
</tr>
<tr>
<td>예시</td>
<td>&#39;+&#39;연산자를 사용해 문자열 a, b 연결한 문자열 c</td>
<td>array.push()</td>
</tr>
</tbody></table>
<h3 id="연습문제">연습문제</h3>
<p>✅ 추가 숙제(선택): p. 173 확인문제 3번 문제 풀고, 풀이 과정 설명하기</p>
<ol start="3">
<li>다음 표시된 함수들이 파괴적 처리를 하는지 비파괴적 처리를 하는지 구분해 맞는 것에 O 표시하세요.(형광펜하겠새우)</li>
</ol>
<p><code>1</code>) [파괴적 처리 / <span style="background-color:#fff5b1">비파괴적 처리</span>]</p>
<pre><code>&gt; const strA = &quot;사과, 배, 바나나, 귤&quot;
undefined

&gt; strA.split(&quot;,&quot;)
(4) [&quot;사과&quot;, &quot;배&quot;, &quot;바나나&quot;, &quot;귤&quot; ]

&gt; strA
&quot;사과, 배, 바나나, 귤&quot;</code></pre><p><code>2</code>) [ <span style="background-color:#fff5b1">파괴적 처리</span> / 비파괴적 처리]</p>
<pre><code>&gt; const arrayB = [&quot;사과&quot;, &quot;배&quot;, &quot;바나나&quot;, &quot;귤&quot; ]
undefined

&gt; arrayB.push(&quot;감&quot;)
5

&gt; arrayB
(5)[&quot;사과&quot;, &quot;배&quot;, &quot;바나나&quot;, &quot;귤&quot;, &quot;감&quot;]</code></pre><p><code>3</code>) [파괴적 처리 / <span style="background-color:#fff5b1">비파괴적 처리</span>]</p>
<pre><code>&gt; const arrayC = [1, 2, 3, 4, 5]
undefined
&gt; arrayC.map((x) =&gt; x * x)
(5) [1, 4, 9, 16, 25]

&gt; arrayC
(5) [1, 2, 3, 4, 5]</code></pre><p><code>4</code>) [파괴적 처리 / <span style="background-color:#fff5b1">비파괴적 처리</span>]</p>
<pre><code>&gt; const strD = &quot; 여백이 포함된 메시지 &quot;
undefined

&gt; strD.trim()
&quot;여백이 포함된 메시지&quot;

&gt;strD
&quot; 여백이 포함된 메시지 &quot;</code></pre><hr>
<h1 id="04-2-반복문">04-2. 반복문</h1>
<h3 id="--for-반복문">- for 반복문</h3>
<ol>
<li>for in 반복문</li>
</ol>
<ul>
<li>배열 요소를 하나하나 꺼내 특정 문장을 실행할 때 사용.</li>
<li>반복 변수에 배열이나 객체의 인덱스가 들어감.</li>
</ul>
<blockquote>
<p>for ( const <span style = "color:yellowgreen">반복 변수</span> in <span style = "color:yellowgreen">배열 또는 객체</span> ) {
<span style = "color:yellowgreen">&emsp; 문장</span>
}</p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;
const todos = [&#39;혼공&#39;, &#39;중국어&#39;, &#39;운동&#39;]
for (const i in todos) {
console.log(`${i}번째 할 일: ${todos[i]}`)
}
&lt;/script&gt;
//출력
 0번째 할 일: 혼공
 1번째 할 일: 중국어
 2번째 할 일: 운동</code></pre>
<p>+ for in 보단 for of나 for이 더 안정적임.</p>
<ol start="2">
<li>for of 반복문</li>
</ol>
<ul>
<li>반복변수에 요소의 값이 들어감.<blockquote>
<p>for ( const <span style = "color:yellowgreen">반복 변수</span> of <span style = "color:yellowgreen">배열 또는 객체</span> ) {
<span style = "color:yellowgreen">&emsp; 문장</span>
}</p>
</blockquote>
<pre><code class="language-Javascript">&lt;script&gt;
const todos = [&#39;혼공&#39;, &#39;중국어&#39;, &#39;운동&#39;]
undefined
for (const todo of todos) {
console.log(`오늘의 할일: ${todo}`)    
}
&lt;/script&gt;
//출력
오늘의 할일: 혼공
오늘의 할일: 중국어
오늘의 할일: 운동</code></pre>
..
🤔 위의 예제에서 인덱스와 값 모두 출력하는 방법은 없을까? 
(ex. 오늘의 할일: 1.운동) / 참고로 gpt한테 물어본거라 오류가 있다면 댓글 부탁드립니당,,
1) <code>entries()</code> 메소드 사용</li>
<li>entries()는 <code>[인덱스, 값]</code> 형태의 배열을 반환해, 인덱스와 값 모두 받을 수 있음.<pre><code class="language-Javascript">&lt;script&gt;
const todos = [&#39;혼공&#39;, &#39;중국어&#39;, &#39;운동&#39;];
</code></pre>
</li>
</ul>
<p>for (const [index, todo] of todos.entries()) {
  console.log(<code>오늘의 할일: ${index + 1}. ${todo}</code>);
}
</script></p>
<pre><code>2) `forEach` 활용
- 배열의 각 요소를 순회하면서 콜백 함수를 실행하는 메소드
- 중단이 필요하거나 비동기 코드가 있을 경우 for of가 더 적합함.
```Javascript
&lt;script&gt;
  todos.forEach((todo, index) =&gt; {
  console.log(`오늘의 할일: ${index + 1}. ${todo}`);
});
&lt;/script&gt;</code></pre><p>..</p>
<ol start="3">
<li>for 반복문</li>
</ol>
<ul>
<li>특정 횟수만큼 반복하고 싶을 때 사용함.<blockquote>
<p>for (<code>let</code> i = 0; i &lt; <span style = "color:yellowgreen">반복 횟수</span>; i++){
<span style = "color:yellowgreen">&emsp;문장</span>
}</p>
</blockquote>
<pre><code class="language-Javascript">&lt;script&gt;
for (let i=0; i&lt;3; i++){//0이상 3미만이면 반복
console.log(`${i}번째 반복입니다.`)
}
&lt;/script&gt;
//출력
0번째 반복입니다.
1번째 반복입니다.
2번째 반복입니다.</code></pre>
..
🤔for in, for of와 달리 for 반복문이 반복 변수를 let으로 선언하는 이유는?</li>
<li>for in과 for of는 반복할 때마다 반복 변수를 새로 선언함. 즉, 기존의 변수에 재할당할 필요가 없음.(let을 쓸 수는 있지만, 안정성을 위해 const를 쓰는 게 좋음.)</li>
<li>for 반복문은 반복 시 반복 변수에 값을 재할당하므로 let이어야 함.(i++하면 기존 i값에 더해진 값을 재할당.)
..</li>
</ul>
<ol start="4">
<li>for 반복문 + 배열</li>
</ol>
<ul>
<li>배열의 length 속성(길이)만큼 반복을 돌리는 형태로 사용<pre><code class="language-Javascript">&lt;script&gt;
const todos = [&#39;혼공&#39;, &#39;중국어&#39;, &#39;운동&#39;]
</code></pre>
</li>
</ul>
<p>for(let i=0; i &lt; todos.length; i++){
    console.log(<code>${i}번째 할 일: ${todos[i]}</code>)}
</script>
//출력
0번째 할 일: 혼공
1번째 할 일: 중국어
2번째 할 일: 운동</p>
<pre><code>### - while 반복문
1. while 반복문
- 조건을 기반으로 사용하는 반복문이 필요할 때(if문과 유사함.)
- 불 표현식이 true이면 무한히 반복됨.
- 무한루프에 빠지지 않도록 조건을 거짓으로 만들 수 있는 내용이 있어야 함.(js는 무한 반복 사용 시 페이지 전체가 먹통이 될 수 있음.)
&gt; while (&lt;span style = &quot;color:yellowgreen&quot;&gt;불 표현식&lt;/span&gt;){
&lt;span style = &quot;color:yellowgreen&quot;&gt;&amp;emsp;문장&lt;/span&gt;
}
```Javascript
&lt;script&gt;
while(confirm(&quot;계속 진행하시겠새우?&quot;)){
    //사용자가 [확인]버튼을 클릭하면 true가 되어 계속 반복
    alert(`${i}번째 반복입니다.`)
    i++
}
&lt;/script&gt;
//결과
confirm창의 확인을 누를 때마다 alert창의 숫자가 올라가며 반복됨.</code></pre><ol start="2">
<li>while 반복문 + 배열<pre><code class="language-Javascript">&lt;script&gt;
let i = 0
const array = [1,2,3,4,5]
</code></pre>
</li>
</ol>
<p>while (i &lt; array.length) {
    console.log(<code>${i}번째 요소: ${array[i]}</code>)
    i++
}
</script>
//출력
0번째 요소: 1
1번째 요소: 2
2번째 요소: 3
3번째 요소: 4
4번째 요소: 5</p>
<pre><code>
### - Keyword
1. break 키워드
- switch 조건문이나 반복문을 벗어날 때 사용
&gt; while(true) {
}break
```Javascript
&lt;script&gt;
for (let i=0; true; i++){
    alert(i+&#39;번째 반복문입니다.&#39;)

    //진행 여부 물어봄
    const isContinue = confirm(&#39;계속 하시겠새우?&#39;)
    if(!isContinue) {
        break
    }
}
//취소를 누르면 반복이 끝나며 프로그램 종료 뜸.
alert(&#39;프로그램 종료&#39;)
&lt;/script&gt;</code></pre><ol start="2">
<li>continue 키워드</li>
</ol>
<ul>
<li>반복문 안의 현재 반복 작업을 멈추고 반복문의 처음으로 돌아가 다음 반복 작업을 수행.<pre><code class="language-Javascript">&lt;script&gt;
let output = 0
for(let i=0; i&lt;=10; i++){
  if(i%2===1){
      continue
  }
  output+=1
}
alert(output)
&lt;/script&gt;
//출력
6</code></pre>
<h3 id="--중첩-반복문">- 중첩 반복문</h3>
</li>
<li>반복문을 여러 겹 중첩해 사용하는 것</li>
<li>n차원 처리를 할 때 주로 사용(ex. n차원 배열)</li>
</ul>
<pre><code class="language-Javascript">&lt;script&gt;
for(i=0; i&lt;10; i++){
    for(j=0; j&lt;i; j++){
        output += &quot;*&quot;
    }
    output += &quot;\n&quot;
}
console.log(output)
&lt;/script&gt;
//출력
*
**
***
****
*****
******
*******
********
*********</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[정보처리기사] 정처기 필기 접수,, 완,, 공부법(정처기 7일 합격)]]></title>
            <link>https://velog.io/@zzang_sera/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%A0%95%EC%B2%98%EA%B8%B0-%ED%95%84%EA%B8%B0-%EC%A0%91%EC%88%98-%EC%99%84-%EA%B3%B5%EB%B6%80%EB%B2%95</link>
            <guid>https://velog.io/@zzang_sera/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC-%EC%A0%95%EC%B2%98%EA%B8%B0-%ED%95%84%EA%B8%B0-%EC%A0%91%EC%88%98-%EC%99%84-%EA%B3%B5%EB%B6%80%EB%B2%95</guid>
            <pubDate>Wed, 22 Jan 2025 04:56:43 GMT</pubDate>
            <description><![CDATA[<p>안녕하새우,,🍤 정처기 필기를 접수했습니다.</p>
<p>공부법이라고 적어놨지만 저도 처음이라 우선 계획 설명 정도에 그칠 것 같습니다. 혹시라도 합격하게 된다면 앞에 합격을 붙일 예정입니다. </p>
<p><img src="https://velog.velcdn.com/images/zzang_sera/post/fe32ee24-a14f-440a-add5-9faf31d2fe56/image.png" alt=""></p>
<p>🕛시험 일정: 2025.02.27 12:40</p>
<p>1월에 공부할 시간이 적어서 2월 말로 신청했는데 실기 준비가 너무 촉박해질 것 같아서 조금 걱정이 되긴 하네용,,, 하지만 우선 필기 합격이 1차 목표이므로 약 1달 간 빡공 예정입니다.</p>
<p>공부 계획</p>
<p><del>1. 기출 풀기
    - 맞추다 어플리케이션 이용
    -&gt; 선택 이유: 최신 기출과 해설을 간편하게 볼 수 있음.</del>
<del>2. 기출 분석
    - 시나공 핵심 요약
    -&gt; 푼 문제의 개념을 확인하고, 오답을 체크하는 용
    -&gt; 추가적으로 필요한 개념은 검색하여 핵심 요약에 추가할 예정</del>
<del>3. 암기
     - 수제비 구음
    - 시나공 핵심요약에 정리한 내용</del></p>
<p><del>1, 2를 D-21까지 2회독 하고, 3은 D-20부터 병행할 예정입니다.</del></p>
<p>정처기 준비하시는 모든 분들,,, 꼭 1트에 같이 붙어용,, 호호
그리고 더 나은 방법이 있다면 추천 부탁드립니다!!</p>
<h4 id="인생은-계획대로-되지-않는-법-프로젝트랑-병행했더니-도저히-시간이-안나서-7일-남기고-친구한테-받은-이기적-기출집-풀고-들어갔습니다">인생은 계획대로 되지 않는 법. 프로젝트랑 병행했더니 도저히 시간이 안나서 7일 남기고 친구한테 받은 이기적 기출집 풀고 들어갔습니다.</h4>
<p>(이기적은 인터넷으로 모의고사를 풀어볼 수 있어서 좋았어요.)</p>
<ul>
<li>하루에 3시간 정도 공부한 것 같고, 2-3일 남기고는 6시간 정도 공부했습니다.</li>
<li>기출 한 회차 풀고 모든 문제에서 모르는 개념있으면 오답 노트에 적어가면서 공부했습니다. 
<span style="background-color:#fff5b1"> tip,, 그냥 문제 많이 푸세요. 어차피 실기공부 다시 해야돼서 평균 60점만 넘기겠단 생각으로 빨리 많이 푸는 게 중요한 것 같습니당.</span> </li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[혼공JS]2주차 CH03. 조건문]]></title>
            <link>https://velog.io/@zzang_sera/%ED%98%BC%EA%B3%B5JS2%EC%A3%BC%EC%B0%A8-CH03.-%EC%A1%B0%EA%B1%B4%EB%AC%B8</link>
            <guid>https://velog.io/@zzang_sera/%ED%98%BC%EA%B3%B5JS2%EC%A3%BC%EC%B0%A8-CH03.-%EC%A1%B0%EA%B1%B4%EB%AC%B8</guid>
            <pubDate>Sun, 19 Jan 2025 14:20:35 GMT</pubDate>
            <description><![CDATA[<p>🍤TMI,, 1/12 - 1/15 상하이에 다녀왔새우,, 즐겁게 놀고 공부할 계획이었으나 감기이슈로 이번주는 공부를 거의 못 했어요,,, 
벌써 새해 다짐을 못 지킨 것 같아 속상하지만 지금부터라도 다시 해보려고요. 다들 목표한 바를 지키지 못했더라도 포기하지 말고 당장 시작해봅시당. 아좌좌!!
<img src= 'https://velog.velcdn.com/images/zzang_sera/post/fc7ac17f-2026-4530-9c53-49fc9db2d79d/image.png' width = 80%>
정신🍒🍤..!
...</p>
<p>[ 2주차 : Chapter 03 ]</p>
<p>[ 과제 ]</p>
<p>✅ p. 139의 확인문제 3번 풀고 완전한 코드 만들어 비주얼 스튜디오 코드에서 실행 결과 인증하기 (기본)
✅ p.152의 &lt;태어난 연도를 입력받아 띠 출력하기&gt; 예제 실행하여 본인의 띠 출력한 화면 캡쳐하기 (선택)</p>
<hr>
<h3 id="03-1-if-조건문">03-1. if 조건문</h3>
<ul>
<li><p>조건문 : 조건에 따라 코드를 실행하거나 실행하지 않기 위해 사용하는 구문 </p>
<ul>
<li>조건분기 : 조건에 따라 코드가 실행되는 흐름을 변경하는 것</li>
<li>조건 : 불 자료형(비교연산자와 논리연산자를 활용해 만듦)</li>
</ul>
</li>
<li><p><code>if 조건문</code> : 가장 일반적인 조건문</p>
<blockquote>
<p>if (<span style="color:#00CC66"> 불 표현식</span> ) {
<span style="color:#00CC66">불 값이 참일 때 실행할 문장</span>
}</p>
<pre><code class="language-JavaScript"></code></pre>
</blockquote>
<script>
//변수 선언
const date = new Date() //현재 날짜와 시간을 갖는 객체 생성
const hour = date.getHours() // 현재 시간을 0~23 사이의 값으로 출력하는 메소드
//if 조건문
if(hour < 12){ 
// 표현식(hour < 12)이 참일 때 실행, 아니면 다음 코드로 넘어감
alert('오전입니다.')
}
if(hour >= 12){ 
// 표현식(hour >= 12)이 참일 때 실행, 아니면 다음 코드로 넘어감
alert('오후입니다.')
}
</script>
<blockquote>
<pre><code>실행 결과 &gt;&gt; 오후입니다.</code></pre></blockquote>
</li>
<li><p><code>else 구문</code> : if 조건문 뒤에 사용, if 조건문이 거짓일 경우 실행. </p>
<blockquote>
<p>if (<span style="color:#00CC66"> 불 표현식</span> ) {
<span style="color:#00CC66">불 값이 참일 때 실행할 문장</span>
} else {
<span style="color:#00CC66">불 값이 거짓일 때 실행할 문장</span>
}</p>
<pre><code class="language-JavaScript"></code></pre>
</blockquote>
<script>
//변수 선언
const date = new Date() //현재 날짜와 시간을 갖는 객체 생성
const hour = date.getHours() // 현재 시간을 0~23 사이의 값으로 출력하는 메소드
//if 조건문
if(hour < 12){ 
// 표현식(hour < 12)이 참일 때 실행
alert('오전입니다.')
} else {
// 표현식(hour < 12)이 거짓일 때 실행
alert('오후입니다.')
}
</script>
<pre><code>실행 결과 &gt;&gt; 오후입니다. 

</code></pre></li>
</ul>
<ul>
<li><p><code>중첩 조건문</code> : 조건문 안에 조건문을 중첩해서 사용</p>
<blockquote>
<p>if (<span style="color:#00CC66"> 불 표현식 1</span> ) {
// <span style="color:#808080">불1 값이 참일 때 실행할 문장 </span>
&emsp;if (<span style="color:#00CC66"> 불 표현식 2</span> ) {
<span style="color:#00CC66">불2 값이 참</span>일 때 실행할 문장
&emsp;} else { 
<span style="color:#00CC66">불2 값이 거짓</span>일 때 실행할 문장
&emsp;} 
} else {
//<span style="color:#808080">불1 값이 거짓일 때 실행할 문장</span>
&emsp;if (<span style="color:#00CC66"> 불 표현식 3</span> ) {
<span style="color:#00CC66">불3 값이 참</span>일 때 실행할 문장
&emsp;} else {
<span style="color:#00CC66">불3 값이 거짓</span>일 때 실행할 문장
&emsp;}
}</p>
<pre><code class="language-JavaScript"></code></pre>
</blockquote>
<script>
//변수 선언
const date = new Date() //현재 날짜와 시간을 갖는 객체 생성
const hour = date.getHours() // 현재 시간을 0~23 사이의 값으로 출력하는 메소드
//중첩 조건문
if(hour < 11){ 
// 표현식(hour < 11)이 참일 때 실행
alert('아침밥 먹으새우.')
} else {
// 표현식(hour < 11)이 거짓일 때 실행
if (hour < 15){
// 표현식(hour < 15)이 참일 때 실행
alert('점심밥 먹으새우.')
} else {
// 표현식(hour < 15)이 거짓일 때 실행
alert('저녁밥 먹으새우.')
}
}
</script>
<pre><code>실행 결과 &gt;&gt; 저녁밥 먹으새우.  </code></pre></li>
<li><p><code>if else if 조건문</code> : 중첩 조건문에서 중괄호 생략, 겹치지 않는 3가지 이상의 조건으로 나눌 때 사용.</p>
<blockquote>
<p>if (불 표현식) {
&emsp;문장
} else if (불 표현식) {
&emsp;문장
} else if (불 표현식) {
&emsp;문장
} else {
&emsp;문장
}</p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;
  //변수를 선언합니다.
  const date = new Date()
  const hour = date.getHours()
  //if else if 조건문
  if(hour &lt; 11){
  alert(&#39;아침이새우&#39;)
  } else if (hour &lt; 15){
  alert(&#39;점심이새우&#39;)
  }else{
  alert(&#39;저녁이새우&#39;)
  }
&lt;/script&gt;</code></pre>
<p>실행 결과 &gt;&gt; 저녁이새우.  </p>
<h4 id="연습문제-기본과제">연습문제 (기본과제)</h4>
<ol start="3">
<li>중첩 조건문은 2장에서 배운 논리 연산자를 적용해 하나의 if 조건문으로 만들 수 있습니다. 빈칸에 어떤 논리 연산자가 들어가야 할까요?</li>
</ol>
<blockquote>
<p>if (x &gt; 10) {
if (x &lt; 20) {
console.log(&#39;조건에 맞습니다.&#39;)
}
}</p>
</blockquote>
<blockquote>
<p>if ( x &gt; 10 <code>빈칸</code> x &lt; 20) {
console.log (&#39;조건에 맞습니다.&#39;)
}</p>
</blockquote>
<p>답: &amp;&amp;</p>
<ul>
<li>코드<img src = "https://velog.velcdn.com/images/zzang_sera/post/5a4c8a2f-27a1-4964-8d64-aed085a2c75e/image.png" width = 80%></li>
<li>실행결과
<img src="https://velog.velcdn.com/images/zzang_sera/post/c0983693-5a7e-4a5a-8791-7d5e5d0aef2f/image.png" alt=""></li>
</ul>
</li>
</ul>
<hr>
<h3 id="03-2-switch-조건문과-짧은-조건문">03-2. switch 조건문과 짧은 조건문</h3>
<ul>
<li><p>switch 조건문 : 특정 값의 조건을 비교할 때 주로 사용.</p>
<blockquote>
<p>switch (<span style="color:#00CC66">자료</span>){
case <span style="color:#00CC66">조건 A</span>:
break
case <span style="color:#00CC66">조건 B</span>:
break
default: <span style="color:#808080">//default 생략 가능</span>
break
}</p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;
    //변수를 선언합니다.
    const input = Number(prompt(&#39;숫자를 입력하세요.&#39;, &#39;숫자&#39;))
    //조건문
    switch (input % 2){
        case 0:
            alert(&#39;짝수입니다.&#39;)
            break
        case 1:
            alert(&#39;홀수입니다.&#39;)
            break
        default:
            alert(&#39;숫자가 아닙니다.&#39;)
            break
    }
  &lt;/script&gt;</code></pre>
<p>실행결과&gt;&gt; 입력&gt;16 / 결과&gt;짝수입니다.</p>
<blockquote>
<ul>
<li>break : switch 조건문이나 반복문을 빠져나갈 때 사용. break 키워드를 만나면 break를 감싸고 있는 조건문이나 반복문의 실행을 중단하고 다음 코드 실행.</li>
</ul>
</blockquote>
</li>
<li><p>조건부 연산자 (=삼항 연산자)</p>
<blockquote>
<p><span style="color:#00CC66">불 표현식</span> ? <span style="color:#00CC66">참일 때의 결과</span> : <span style="color:#00CC66">거짓일 때의 결과</span></p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;
    //변수를 선언합니다.
    const input = prompt(&#39;숫자를 입력해주세요.&#39;, &#39;숫자&#39;)
    const num = Number(input)

    //조건문
    const result = (num &gt;= 0) ? &#39;0 이상의 숫자입니다&#39;:&#39;0보다 작은 숫자입니다.&#39;
    alert(result)
  &lt;/script&gt;</code></pre>
<p>실행결과&gt;&gt; 입력 &gt; -3 / 결과 &gt; 0보다 작은 숫자입니다.</p>
</li>
<li><p>짧은 조건문 : 논리 연산자의 특성을 조건문으로 사용.</p>
<blockquote>
<ul>
<li>논리합 연산자(<code>||</code>) : 좌변이 참이면 우변 실행 안함
<span style="color:#00CC66">불 표현식</span> || <span style="color:#00CC66">불 표현식이 거짓</span>일 때 실행할 문장</li>
</ul>
</blockquote>
<pre><code class="language-JavaScript">true || console.log(&#39;실행될까요?&#39;)
&gt;&gt;&gt;true
false || console.log(&#39;실행될까요?&#39;)
&gt;&gt;&gt; 실행될까요?</code></pre>
<blockquote>
<ul>
<li>논리곱 연산자(<code>&amp;&amp;</code>): 좌변이 거짓이면 우변 실행안함
<span style="color:#00CC66">결과가 거짓인 불 표현식</span> &amp;&amp; <span style="color:#00CC66">불표현식이 참</span>일 때 실행할 문장
=&gt; 실행안함.</li>
</ul>
</blockquote>
<h4 id="누적예제선택-과제">누적예제(선택 과제)</h4>
</li>
<li><p>p.152의 &lt;태어난 연도를 입력받아 띠 출력하기&gt; 예제 실행하여 본인의 띠 출력한 화면 캡쳐하기</p>
</li>
<li><p>코드</p>
<img src = "https://velog.velcdn.com/images/zzang_sera/post/fb0ccf66-4d96-4069-801f-ad770ede9918/image.png" width = 80%></li>
<li><p>실행 화면</p>
<img src = "https://velog.velcdn.com/images/zzang_sera/post/fc6bdfc8-e9f5-481f-a117-c9442c5363ed/image.png" width = 80%>
</li>
<li><p><code>split()</code>을 활용해 효율적으로 코드짜기</p>
<pre><code class="language-JavaScript">&lt;script&gt;
const input = prompt(&#39;태어난 연도를 입력하새우&#39;, &#39;&#39;)
const year = Number(input)
const animalArray = &#39;원숭이, 닭, 개, 돼지, 쥐, 소, 호랑이, 토끼, 용, 뱀, 말, 양&#39;.split(&#39;,&#39;)

alert(`${year}년에 태어났다면 ${animalArray[year%12]}띠입니다.`)
&lt;/script&gt;</code></pre>
</li>
<li><blockquote>
<p>문자열 &#39;원숭이~양&#39;을 ,로 나눠 배열로 만듦.
<code>문자열A.split(&#39;문자열B&#39;)</code>: 문자열 A를 문자열 B로 잘라 배열을 만드는 메소드</p>
</blockquote>
</li>
</ul>
<p>  ❇️ 틀린문제</p>
<ul>
<li><p>다음 중 다른 실행 결과를 내는 코드를 고르세요.
1) true ? alert(&#39;출력 A&#39;) : alert(&#39;출력 B&#39;)
2) false ? alert(&#39;출력 B&#39;) : alert(&#39;출력 A&#39;)
3) true || alert(&#39;출력 A&#39;)
4) true &amp;&amp; alert(&#39;출력 A)</p>
<p>답: 4
해설
1) 삼항 연산자이므로 true인 경우 alert(&#39;출력 A&#39;) 실행
2) 삼항 연산자이므로 false인 경우 alert(&#39;출력 A&#39;) 실행
3) 논리합 연산자이므로 둘 중 하나만 참이어도 참, 앞에서 true가 나오면 더 이상 실행하지 않고 true로 결론 냄. 
4) 논리곱 연산자이므로 둘 모두가 참이어야 참, 두 항 모두 확인해봐야 하므로 alert(&#39;출력 A)가 실행됨.</p>
</li>
</ul>
<hr>
<p>  조건문이나 반복문은 어느 언어든 비슷한 것 같다는 생각이 들어요. 그래서 다양한 예제를 풀어보면 좋을 것 같습니당. 아쉬운 이번 주를 뒤로 하고 다음 주부터는 조금 부지런히 지내봐야겠어요.. 아 참고로,, 정처기 필기도 접수했답니다.. 호호 더더욱 열심히 해야 할 이유가 생겨서 행복해요 그럼 이번주도 아좌좌!🍤</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[혼공JS]1주차 CH02. 자료와 변수]]></title>
            <link>https://velog.io/@zzang_sera/%ED%98%BC%EA%B3%B5JS1%EC%A3%BC%EC%B0%A8-CH02.-%EC%9E%90%EB%A3%8C%EC%99%80-%EB%B3%80%EC%88%98</link>
            <guid>https://velog.io/@zzang_sera/%ED%98%BC%EA%B3%B5JS1%EC%A3%BC%EC%B0%A8-CH02.-%EC%9E%90%EB%A3%8C%EC%99%80-%EB%B3%80%EC%88%98</guid>
            <pubDate>Sun, 19 Jan 2025 12:15:39 GMT</pubDate>
            <description><![CDATA[<h3 id="02-1-기본-자료형">02-1. 기본 자료형</h3>
<h4 id="자료형">자료형</h4>
<ul>
<li>자료형: 자료의 종류<h4 id="문자열-자료형">문자열 자료형</h4>
</li>
<li>문자 표현 (js는 문자 한 개만을 나타나는 자료형 없음)</li>
<li>큰 따옴표(&quot; &quot;)와 작은 따옴표(&#39; &#39;) 사용<pre><code class="language-JavaScript"> console.log(&quot;This is &#39;sewoo&#39;&quot;)
 &gt; &quot;This is &#39;sewoo&#39;&quot;</code></pre>
<blockquote>
<h5 id="이스케이프-문자---">이스케이프 문자 ( <code>\</code> )</h5>
<ul>
<li><code>\</code> + 따옴표(&quot;) = 따옴표를 문자 그대로 사용 가능</li>
</ul>
</blockquote>
</li>
<li><code>\n</code> : 줄바꿈</li>
<li><code>\t</code> : tab</li>
<li><code>\\</code> : 역슬래시<blockquote>
<pre><code class="language-JavaScript">console.log(&quot;This is \&quot;string\&quot;&quot;)
&gt; &quot;This is &quot;string&quot;&quot;</code></pre>
</blockquote>
</li>
</ul>
<ul>
<li>문자열 연산자</li>
</ul>
<ol>
<li>문자열 연결</li>
</ol>
<ul>
<li><code>+</code> : 문자열 연결 연산자<pre><code class="language-JavaScript">  console.log(&#39;가나다&#39; + &#39;라마&#39; + &#39;바사아&#39;)
  &gt; &quot;가나다라마바사아&quot;</code></pre>
</li>
<li>템플릿 문자열(백틱(<code>``</code>)과 <code>${...}</code> 기호 사용)<pre><code class="language-JavaScript">  console.log(`15 + 2의 값은 ${15 + 2}이다.`)
  &gt; &quot;15 + 2의 값은 17이다.&quot;</code></pre>
</li>
</ul>
<ol start="2">
<li>문자열<code>[숫자]</code><pre><code class="language-JavaScript"> console.log(&#39;안녕하세요&#39;[3])
 &gt; &quot;세&quot;</code></pre>
</li>
</ol>
<h4 id="숫자-자료형">숫자 자료형</h4>
<ul>
<li><p>숫자 표현 </p>
</li>
<li><p>숫자 연산자</p>
<ul>
<li><code>+</code> : 더하기 </li>
<li><code>-</code> : 빼기</li>
<li><code>*</code> : 곱하기</li>
<li><code>/</code> : 나누기(몫) </li>
<li><code>%</code> : 나머지 연산자</li>
</ul>
</li>
<li><p>연산자 우선순위 고려</p>
<pre><code class="language-JavaScript">  console.log(5 + 3 * 2)
  &gt; 11
  console.log((5 + 3) * 2)
  &gt; 16</code></pre>
<h4 id="boolean불린-자료형">boolean(불린) 자료형</h4>
</li>
<li><p>참과 거짓 표현 </p>
</li>
<li><p>boolean 자료형</p>
<ul>
<li><code>true</code> : 참</li>
<li><code>false</code> : 거짓</li>
<li><code>!</code> : 논리 부정 연산자 (참 -&gt; 거짓 / 거짓 -&gt; 참)</li>
</ul>
</li>
<li><p>비교연산자</p>
<ul>
<li><code>===</code> :  양쪽이 같다.</li>
<li><code>!==</code> : 양쪽이 다르다.</li>
<li><code>&gt;</code> : 왼쪽이 더 크다.</li>
<li><code>&lt;</code> : 오른쪽이 더 크다.</li>
<li><code>&gt;=</code> : 왼쪽이 더 크거나 같다.</li>
<li><code>&lt;=</code> : 오른쪽이 더 크거나 같다.<pre><code class="language-JavaScript">console.log(52 &gt; 273)
&gt; false
console.log(52 &lt; 273)
&gt; true</code></pre>
<blockquote>
<ul>
<li><code>==</code>, <code>!=</code> : 값이 같은지</li>
<li><code>===</code>, <code>!==</code> : 값과 자료형이 같은지</li>
</ul>
</blockquote>
</li>
</ul>
</li>
<li><p>논리합 / 논리 곱 연산자</p>
<ul>
<li><code>&amp;&amp;</code> : 논리곱 연산자(양쪽 모두 참일 때만 참) //그리고</li>
<li><code>||</code> : 논리합 연산자(한 쪽만 참이어도 참) //또는</li>
</ul>
</li>
</ul>
<h4 id="자료형-검사">자료형 검사</h4>
<ul>
<li><code>typeof</code> 연산자<blockquote>
<p>typeof(자료) or typeof 자료</p>
</blockquote>
<pre><code class="language-JavaScript">typeof(&#39;문자열&#39;)
&gt;&gt; &quot;string&quot; //문자열을 의미
typeof 273
&gt;&gt; &quot;number&quot; //숫자를 의미
typeof (10) === &#39;number&#39;
&gt;&gt; true //문자열과 비교하여 자료형 확인 시 주로 사용 
&gt;```

</code></pre>
</li>
</ul>
<hr>
<h3 id="02-2-상수와-변수">02-2. 상수와 변수</h3>
<h4 id="상수">상수</h4>
<ul>
<li>항상 같은 수 (선언 후 값 수정 불가)</li>
<li>상수 선언 : <code>const 이름 = 값</code></li>
</ul>
<h4 id="변수">변수</h4>
<ul>
<li>변할 수 있는 수 ( 선언 후 값 수정 가능 )</li>
<li>변수 선언 : <code>let 이름 = 값</code> </li>
</ul>
<p>⚠️ <code>var 이름 = 값</code> 으로도 변수를 선언 할 수 있지만, 중복 선언의 위험성과 변수의 범위 문제로 <code>let</code> 으로 대체됨.</p>
<h4 id="선언">선언</h4>
<ul>
<li>상수 또는 변수를 생성하는 것</li>
</ul>
<h4 id="할당">할당</h4>
<ul>
<li>상수 또는 변수에 값을 넣는 것</li>
</ul>
<h4 id="관련-연산자">관련 연산자</h4>
<ul>
<li><p>복합 대입 연산자 ( 기존 변수의 값에 값을 연산함)</p>
<ul>
<li><code>+=</code> :   a += 1 (뜻: a = a + 1).</li>
<li><code>-=</code> :   a -= 1 (뜻: a = a - 1).</li>
<li><code>*=</code> :   a <em>= 1 (뜻: a = a \</em> 1).</li>
<li><code>/=</code> :   a /= 1 (뜻: a = a / 1).</li>
<li><code>%=</code> :   a %= 1 (뜻: a = a % 1).</li>
</ul>
</li>
</ul>
<ul>
<li>증감 연산자(기존 변수 값에 1을 연산함 -&gt; 복합대입 간략하게 사용)<ul>
<li><code>변수 ++</code> : a++ (a에 1 더함 / 후위)</li>
<li><code>++ 변수</code> : ++a (a에 1 더함 / 전위)</li>
<li><code>변수 --</code> : a-- (a에 1 뺌 / 후위)</li>
<li><code>-- 변수</code> : --a (a에 1 뺌/ 전위)</li>
</ul>
</li>
</ul>
<blockquote>
<p>후위 : 문장 실행 후 값을 연산하라  </p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;    
let num = 5
alert(num++)//출력: 5
alert(num++)//출력: 6
alert(num++)//출력: 7
&lt;/script&gt;</code></pre>
<blockquote>
<p>전위 : 문장 실행 전 값을 연산하라</p>
</blockquote>
<pre><code class="language-JavaScript">&lt;script&gt;    
let num = 5
alert(++num)//출력: 6
alert(++num)//출력: 7
alert(++num)//출력: 8
&lt;/script&gt;</code></pre>
<ul>
<li><code>undefined</code> 자료형 : 값이 없다는 것을 확인할 때 주로 사용 (선언 후 값을 할당 or 초기화하지 않았을 때.)</li>
</ul>
<hr>
<h3 id="02-3-자료형-변환">02-3. 자료형 변환</h3>
<h4 id="입력">입력</h4>
<ul>
<li>문자열 입력 ( <code>prompt(메시지 문자열, 기본 입력 문자열)</code> )<pre><code class="language-JavaScript">&lt;script&gt;
const input = prompt(&#39;경고창에 뜰 내용을 입력하시오.&#39;, &#39;_default&#39;)
alert(input)
&lt;/script&gt;</code></pre>
&lt;input //prompt 함수 실행&gt;
<img src="https://velog.velcdn.com/images/zzang_sera/post/9270c44b-0a72-4a9a-99b1-ad0d58100f1f/image.png" alt=""></li>
</ul>
<p>&lt;alert 함수 실행 // input에 입력된 문자열의 내용 출력&gt;
<img src="https://velog.velcdn.com/images/zzang_sera/post/52a3fec9-8b52-4b16-836d-0e1c0d27396e/image.png" alt=""></p>
<blockquote>
<p>리턴: 함수를 실행한 후 값을 남김</p>
</blockquote>
<ul>
<li>boolean 입력 (<code>confirm(메시지 문자열)</code>)<ul>
<li>사용자의 답변에 따라 <code>true</code> or <code>false</code> 값 리턴함.<pre><code class="language-JavaScript">&lt;script&gt;
const input = confirm(&#39;수락하시겠습니까?&#39;)
alert(input)
&lt;/script&gt;</code></pre>
&lt;확인 : true / 취소 : false // 선택에 따른 boolean 값 리턴&gt;
<img src="https://velog.velcdn.com/images/zzang_sera/post/c6e62a91-1ecb-4435-b431-fecc126d64e6/image.png" alt=""></li>
</ul>
</li>
</ul>
<p>🤔웹 페이지를 제작 시, confirm의 리턴값을 받아서 다음 동작을 지시할 때 활용할 수 있을 것 같다는,, 생각이,,,</p>
<h4 id="자료형-변환">자료형 변환</h4>
<ul>
<li>숫자 자료형으로 변환 <ul>
<li><code>Number(자료)</code> : 함수를 사용하여 숫자 자료형으로 변환</li>
<li><code>NaN</code> : 숫자로 변환할 수 없는 문자열의 경우 Not a Number 출력</li>
</ul>
</li>
<li>문자열 자료형으로 변환 <ul>
<li><code>String(자료)</code> : 함수를 사용하여 문자열 자료형으로 변환</li>
<li><code>문자열 + &#39;&#39;</code> : 문자열 + 빈 문자열 연산으로도 문자열 자료형으로 변환 할 수 있음.</li>
</ul>
</li>
<li>불 자료형으로 변환 <ul>
<li><code>Boolean(자료)</code> : 함수를 사용하여 불 자료형으로 변환</li>
<li><code>!!</code> : 논리 부정 연산자를 2번 사용하여 불 자료형으로 변환할 수 있음 
⚠️ 대부분의 자료는 불 변환 시 true로 변환되지만, 5개의 자료형(<code>0 / NaN / &#39;...&#39;또는 &#39;빈문자열&#39;/ null / undefined</code>)은 false로 변환됨.</li>
</ul>
</li>
</ul>
<p>🤔연습문제를 다시 풀어보는 중에 궁금증이 하나 생겼습니다. js는 자동 형변환이 되는 데 왜 형변환을 해줘야 할까?</p>
<pre><code class="language-JavaScript">&lt;script&gt;
        const input = prompt(&#39;cm를 입력해주세요&#39;)
        const cm = input //const cm = Number(input)으로 쓰는 게 정석

        const inch = cm * 0.393701

        alert(`${cm}cm는 ${inch}inch입니다.`)
    &lt;/script&gt;
</code></pre>
<p>그래서 gpt한테 물어봤습니다..(혹시 틀린 답이라면 알려주세요)
=&gt; &#39;자동 형변환이 되지만, 오류가 생길 수 있으니 초보자일수록 형변환하는 습관을 들여라,,,&#39; </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[혼공JS]1주차 CH01. 자바스크립트 개요와 개발환경 설정]]></title>
            <link>https://velog.io/@zzang_sera/%ED%98%BC%EA%B3%B5JS1%EC%A3%BC%EC%B0%A8-CH01.-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%9C%EC%9A%94%EC%99%80-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95</link>
            <guid>https://velog.io/@zzang_sera/%ED%98%BC%EA%B3%B5JS1%EC%A3%BC%EC%B0%A8-CH01.-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%9C%EC%9A%94%EC%99%80-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95</guid>
            <pubDate>Wed, 08 Jan 2025 03:24:02 GMT</pubDate>
            <description><![CDATA[<p>안녕하새우🍤. 첫 글이에용
대학교 3학년 2학기가 끝나가는 이름만 공대인 저는,, 조금 늦긴 했지만,,, 프론트엔드 개발자가 되기로,, 결심했슴미다..</p>
<p>그렇게 2주 간 자바스크립트 공부를 하다가 기말고사가 왔고 어느순간 js공부를 잊고 있는 저를 발견했담미다.
<img src="https://velog.velcdn.com/images/zzang_sera/post/8a4d5b02-bfc3-441e-9414-3d5b2634300f/image.png" width="50%" height="50%">
그리하여 약간의 강제성과 내면의 J를 깨우기 위해 혼공학습단에 참여하게 되었슴미다. </p>
<p><img src="https://velog.velcdn.com/images/zzang_sera/post/300d2f50-ca20-4516-ab7e-abc1d961e645/image.png" alt=""></p>
<p>#여기서 잠깐,, 새우의 새해 결심은 1. 공부습관만들기(매일1시간이상,,) 2.운동하기(주2회이상,,) 3. 자격증따기(졸업하자) 4. 재태크공부(취미생활임미다..) 여러분은용,,?</p>
<p>말이 너무 많았네용,, 첫 글이니 이해해주시길,,, </p>
<hr>
<p>[ 1주차 : Chapter 01 ~ 02 ]</p>
<p>[ 과제 ] </p>
<p>✅ p. 54의 &lt;파일 만들고 저장해 실행하기&gt;에서 &#39;Hello World&#39; 출력하기<br>✅ Ch.01(01-1) 확인 문제 1번 상세하게 적고 인증하기 (선택)</p>
<p>...</p>
<h3 id="01-1-자바스크립트의-활용">01-1. 자바스크립트의 활용</h3>
<p>&lt;자바스크립트란?&gt;</p>
<ul>
<li>웹브라우저에서 작동하는 프로그래밍 언어</li>
<li>웹 클라이언트, 서버(Node.js), 모바일(리액트 네이티브), 데스크톱(일렉트론), 데이터(NoSQL) 등의 분야에서 사용</li>
</ul>
<img src="https://velog.velcdn.com/images/zzang_sera/post/8d3ea5c3-131b-43f7-a16a-8f268b2f0bf1/image.png" width="50%" height="50">

<p>&lt;ECMAScript란?&gt;</p>
<ul>
<li>자바스크립트의 표준 명칭 but. 대부분 자바스크립트라고 함.</li>
<li>크롬, 파이어폭스와 같은 최신 브라우저는 최신 버전의 자바스크립트 문법을 지원함.(인터넷 익스플로러 제외🪦)</li>
</ul>
<p>&lt;웹 애플리케이션이란?&gt;</p>
<ul>
<li>기존의 웹 페이지보다 많은 기능을 구현한 웹 페이지(정적 -&gt; 동적)</li>
</ul>
<p>...</p>
<h4 id="확인문제">확인문제</h4>
<ol>
<li><p>인터넷을 돌아다니면서 보았던 쉽게 사용할 수 있고, 기능이 많다고 느꼈던 웹 사이트를 5개 정도 적어보세요(✅선택 과제)</p>
<blockquote>
<p>1) notion
 2) triple
 3) youtube
 4) discord
 5) wishbucket</p>
</blockquote>
</li>
<li><p>Statcounter에서 책을 보고 있는 현재 시점의 웹 브라우저 점유율(Browser Market Share Worldwide)을 확인해보세요.
<a href="https://gs.statcounter.com/browser-market-share/desktop/south-korea">https://gs.statcounter.com/browser-market-share/desktop/south-korea</a></p>
<img src="https://velog.velcdn.com/images/zzang_sera/post/f3629f9a-4e6f-4fab-a20e-2ba801c62a62/image.png" width="80%">

</li>
</ol>
<p>....</p>
<h3 id="01-2-개발환경-설치와-코드-실행">01-2. 개발환경 설치와 코드 실행</h3>
<p>그래도,,, VScode는 있어서 실행만 했슴미다..😹(✅과제)</p>
<img src = "https://velog.velcdn.com/images/zzang_sera/post/edf4deae-263b-4a01-ad37-0bab09243cce/image.png" width="70%">

<pre><code class="language-HTML">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
  &lt;title&gt;hello&lt;/title&gt;
  &lt;script&gt;
    alert(&#39;Hello World&#39;)
  &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
<blockquote>
<p>구글 크롬 개발자 도구 단축키: Ctrl + Shift + i</p>
</blockquote>
<p>....</p>
<h4 id="확인문제-1">확인문제</h4>
<ol>
<li><p>구글 크롬 개발자 도구의 콘솔을 실행하고 다음 명령을 입력했을 때 나오는 결과를 빈칸에 적어보세요. 코드를 하나 실행할 때 여러 줄의 출력이 나오는 경우 모두 적어주세요.</p>
<p>1) &quot;안녕하새우.&quot;</p>
<blockquote>
<p>&#39;안녕하새우&#39;</p>
</blockquote>
<p>2) console.log(&quot;안녕하새우.&quot;)</p>
<blockquote>
<p>안녕하새우</p>
</blockquote>
<p>3) &quot;안녕하세요</p>
<blockquote>
<p>VM295:1 Uncaught ReferenceError: 안녕하세요 is not defined at <anonymous>:1:1</p>
</blockquote>
</li>
</ol>
<ol start="2">
<li>비주얼 스튜디오 코드에 다음 소스 코드를 입력하고 ex01.html로 저장한 후 나오는 결과를 적어보세요.<pre><code class="language-HTML">&lt;body&gt;
 &lt;script&gt;
   document.body.innerHTML = &quot;&lt;h1&gt;안녕하세요&lt;/h1&gt;&quot;
 &lt;/script&gt;
&lt;/body&gt;</code></pre>
<img src="https://velog.velcdn.com/images/zzang_sera/post/85a07d93-afd0-4efb-99cb-b6a5783cd4e9/image.png" alt=""></li>
</ol>
<p> ....</p>
<h3 id="01-3-알아두어야-할-기본-용어">01-3. 알아두어야 할 기본 용어</h3>
<ol>
<li>expression(표현식)<ul>
<li>자바스크립트에서 값을 만들어 내는 간단한 코드</li>
</ul>
</li>
<li>statement(문장)<ul>
<li>하나 이상의 expression의 모임</li>
<li>세미콜론(;) 또는 줄바꿈으로 문장의 종결 선언(혼용 가능)</li>
<li>statement의 모임 -&gt; program,,</li>
</ul>
</li>
<li>keyword(키워드)<ul>
<li>정해진 의미가 있는 단어</li>
</ul>
</li>
<li>identifier(식별자)<ul>
<li>선언하여 사용하는 단어<blockquote>
<ul>
<li>키워드를 사용하면 안 됨.</li>
<li>숫자로 시작하면 안 됨.</li>
<li>특수 문자는 _와 $만 허용</li>
<li>공백 문자 포함할 수 없음.</li>
<li>대문자 시작: 클래스/ 소문자 시작: 변수, 인스턴스, 함수, 메소드</li>
<li>여러 단어로 이루어진 식별자는 두번째 단어부터 첫글자 대문자로(ex. i am a sewoo -&gt; iAmASewoo)</li>
<li>의미있는 단어로 만드는 게 좋음(a(x), number1(O))</li>
</ul>
</blockquote>
</li>
</ul>
</li>
<li>comment(주석)<ul>
<li>코드 설명용, 프로그램에 영향 없음.</li>
</ul>
<ol>
<li>HTML 태그 주석 <blockquote>
<p>&lt;!--주석--&gt;</p>
</blockquote>
</li>
<li>자바스크립트 주석<blockquote>
<p>// 주석 (한 줄만 주석처리할 때)
/*주석*/ (여러 줄 주석 처리할 때)</p>
</blockquote>
</li>
</ol>
</li>
</ol>
<p>....</p>
<h4 id="확인문제-2">확인문제</h4>
<ol>
<li>다음 단어 중 식별자로 사용할 수 있는 것은 O표, 식별자로 사용할 수 없는 것은 X표 하세요.<pre><code>1) a (O)
2) hello (O)
3) 10times (X)
4) _ (O)
5) $ (O)</code></pre></li>
</ol>
<ol start="2">
<li><p>console.log()에서 conosole과 log는 무엇인가요?</p>
<pre><code>1) console: 식별자
2) log: 식별자, 메소드</code></pre></li>
<li><p>여러 단어로 이루어진 식별자를 만드세요.</p>
<pre><code>1) we are the world =&gt; weAreTheWorld
2) create output =&gt; createOutput
3) create request =&gt; createRequest
4) init server =&gt; initServer
5) init matrix =&gt; initMatrix</code></pre></li>
<li><p>다음 코드를 입력해보고 어떤 오류가 뜨는지 확인해보세요.</p>
<pre><code>1) konsole.log(&#39;안녕하세요&#39;)
=&gt; VM41:1 Uncaught ReferenceError: konsole is not defined
 at &lt;anonymous&gt;:1:1
</code></pre></li>
</ol>
<p>2) +++ 1 ++ 2 + 3
  =&gt; Uncaught SyntaxError: Invalid left-hand side expression in postfix operation</p>
<p>3) console.log)
  =&gt; Uncaught SyntaxError: Unexpected token &#39;)&#39;</p>
<pre><code>

---
  처음 써봐서 그런지 내용 요약이 아쉽네요. 더 간결하게 줄일 수 있을 것 같은데 흠,, 앞으로 써가면서 더 효율적으로 정리해봐야겠어요.

  구럼 여기서 마치도록 하겠슴미다. 읽어주셔서 감사하새우🍤 다들 아좌좌!
  ![](https://velog.velcdn.com/images/zzang_sera/post/c81fa891-75bc-43c5-b54c-e0fb5725c824/image.png)</code></pre>]]></description>
        </item>
    </channel>
</rss>