<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>bong-suk.log</title>
        <link>https://velog.io/</link>
        <description>뉴비입니다</description>
        <lastBuildDate>Tue, 07 Jan 2025 04:53:56 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>bong-suk.log</title>
            <url>https://velog.velcdn.com/images/bong-suk/profile/63db7fa5-3a1a-44ea-9c09-413834cebdb8/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. bong-suk.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/bong-suk" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[TypeScript]]></title>
            <link>https://velog.io/@bong-suk/TypeScript</link>
            <guid>https://velog.io/@bong-suk/TypeScript</guid>
            <pubDate>Tue, 07 Jan 2025 04:53:56 GMT</pubDate>
            <description><![CDATA[<h2 id="typescript-개요">TypeScript 개요</h2>
<ul>
<li>TypeScript는 Microsoft 에서 개발 및 유지 관리하는 오픈 소스 언어</li>
<li>큰 스케일의 애플리케이션 개발을 위해 설계된 언어</li>
<li>JavaScript에 정적 타이핑과 선택적 타입 annotation 추가</li>
<li>JavaScript의 상위 집합이 TypeScript</li>
<li>모든 Javascript  코드는 구문적으로 유효한 TypeScript</li>
</ul>
<h3 id="타입스크립트의-주요-특징">타입스크립트의 주요 특징</h3>
<ul>
<li>크로스 플랫폼 : TypeScript는 JavaScript가 실행되는 모든 플랫폼에서 실행된다.</li>
<li>객체 지향 언어 : TypeScript는 클래스, 인터페이스, 모듈과 같은 강력한 객체 지향 프로그래밍 기능을 제공한다.</li>
<li>정적 타입 검사 : TypeScript는 정적 타이핑을 사용하며, 이는 타입 annotation(타입 주석)을 통해 수행된다. 이를 통해 컴파일 시에 타입 검사가 가능하므로, 스크립트를 매번 실행하지 않아도 코드 작성 중에 오류를 찾기 쉽다.</li>
<li>타입 추론 : 변수가 타입 없이 선언되면, 그 값에 기반하여 타입을 추론하는 기능을 제공한다.</li>
<li>선택적 정적 타이핑 : TypeScript의 정적 타입은 선택적이다</li>
<li>DOM 조작 : Javascript처럼 TypeScript도 DOM을 조작하는 데 사용할 수 있습니다.</li>
<li>ES 6 기능 포함 : TypeScript는 클래스, 인터페이스, 화살표 함수 등 예정된 ECMAScript 2015의 대부분 기능을 포함하고 있습니다.</li>
</ul>
<h3 id="js-vs-ts">JS vs TS</h3>
<ul>
<li>JavaScript 는 웹의 표준 언어로, 동적인 웹사이트와 애플리케이션을 만드는 데 필수적인 도구이다. 하지만 JavaScript만으로는 프ㅏ로그램의 복잡성이 커질 때 발생할 수 있는 여러 문제들을 해결하기 어렵다.</li>
<li>TypeScript는 JavaScript의 상위 집합으로, JavaScript의 모든 기능을 포함하면서도 정적 타입 검사와 같은 강력한 기능을 추가한다.</li>
</ul>
<table>
<thead>
<tr>
<th align="center">특징</th>
<th align="center">JavaScript</th>
<th align="center">TypeScript</th>
</tr>
</thead>
<tbody><tr>
<td align="center">타입 시스템</td>
<td align="center">동적 타입, 변수의 타입은 런타임에 결정됨</td>
<td align="center">정적 타입. 변수의 타입은 컴파일 시점에 결정됨</td>
</tr>
<tr>
<td align="center">타입 안정성</td>
<td align="center">타입 오류가 런타임에 발생할 수 있음 (낮은 타입 안정성)</td>
<td align="center">타입 오류는 대부분 컴파일 시점에 발견됨 (높은 타입 안정성)</td>
</tr>
<tr>
<td align="center">컴파일</td>
<td align="center">인터프리터 언어로, 소스 코드가 런타임에 해석됨</td>
<td align="center">컴파일 언어로, TypeScript 코드는 JavaScript로 컴파일되어 실행</td>
</tr>
<tr>
<td align="center">학습 곡선</td>
<td align="center">비교적 쉬움</td>
<td align="center">JavaScript에 비해 다소 어려움, 타입 시스템과 추가 문법을 학습 해야한다.</td>
</tr>
<tr>
<td align="center">인터페이스와 제네릭</td>
<td align="center">지원하지 않음.</td>
<td align="center">지원함.</td>
</tr>
<tr>
<td align="center">호환성</td>
<td align="center">모든 브라우저와 환경에서 기본적으로 지원됨.</td>
<td align="center">JavaScript로 컴파일 되어야 브라우저와 환경에서 실행될 수 있음.</td>
</tr>
</tbody></table>
]]></description>
        </item>
        <item>
            <title><![CDATA[오즈코딩스쿨 with AWS 해커톤의 날!!]]></title>
            <link>https://velog.io/@bong-suk/%EC%98%A4%EC%A6%88%EC%BD%94%EB%94%A9%EC%8A%A4%EC%BF%A8-with-AWS-%ED%95%B4%EC%BB%A4%ED%86%A4%EC%9D%98-%EB%82%A0</link>
            <guid>https://velog.io/@bong-suk/%EC%98%A4%EC%A6%88%EC%BD%94%EB%94%A9%EC%8A%A4%EC%BF%A8-with-AWS-%ED%95%B4%EC%BB%A4%ED%86%A4%EC%9D%98-%EB%82%A0</guid>
            <pubDate>Fri, 03 Jan 2025 08:07:50 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/bong-suk/post/f137b20d-998e-43ee-9154-05cff56349c5/image.png" alt=""></p>
<h2 id="오즈코딩스쿨-with-aws-해커톤의-날">오즈코딩스쿨 with AWS 해커톤의 날!!</h2>
<p>안녕하세요! 오즈코딩스쿨 초격차 과정 7기 정봉석입니다. 이번에 AWS JAM에 참여한 경험을 공유하고자 합니다. 부트캠프를 통해 웹 개발의 기초를 다졌지만, AWS사옥에 가서 해커톤도 한다고 하더라구요? 재밌어 보여서 참여했습니다.</p>
<h2 id="오즈코딩스쿨과-aws가-함께하는-해커톤에-참여한-소감이-어떠셨나요">오즈코딩스쿨과 AWS가 함께하는 해커톤에 참여한 소감이 어떠셨나요?</h2>
<p>AWS를 가면 좋은 스토리가 될거라고 생각했다. 
AWS 서비스 중, Iam, S3, CloudFront만 써보고 가서 걱정이 많았었다.
모르는 부분 반 이상!! 아는거 조금!!인 상태로 참여 했는데 생각보다 재밌게 했어요. </p>
<h3 id="오늘-우승-목표">오늘 우승 목표!</h3>
<p><img src="https://velog.velcdn.com/images/bong-suk/post/8ff0864f-f287-4171-ba91-8453ae4944ac/image.png" alt="">
그나마 쉬운것 + 어려운것 택1해서 빨리 끝내고 1등으로 끝내고 쉬겠다가 전략이었다. (성공적)</p>
<h2 id="aws-jam">AWS JAM</h2>
<h3 id="참여한-aws-jam의-주제나-목적-혹은-진행-방식에-대한-간략한-소개">참여한 AWS JAM의 주제나 목적 혹은 진행 방식에 대한 간략한 소개</h3>
<p>조재구 강사님이 시작 전 설문으로 아는 부분과 완전히 모르는 부분에 대해 조사 하시고 1차적인 개념 설명을 해주신 다음 9개 문제 풀이에 들어 갔습니다. 문제 풀이 시작부터 끝까지 자유로운 분위기로 진행됬지만 뭔가 다들 집중한다고 말을 안해서 조용히 풀었던 것 같습니다.</p>
<h3 id="팀원들과의-협업-방식이나-역할-분담에-대한-언급">팀원들과의 협업 방식이나 역할 분담에 대한 언급</h3>
<p>중요하지않다. 스피드가 생명이다. 빨리 끝낼 수 있는걸 선택해서 끝내는걸 목표로 잡았다.</p>
<h3 id="실패한-접근-방식도-포함해-학습-과정을-공유해-주세요">실패한 접근 방식도 포함해 학습 과정을 공유해 주세요!</h3>
<p>적혀있는 내용을 이해못해서 헤매긴 했는데 구글과 GPT는 천사다.</p>
<h2 id="마무리">마무리</h2>
<h3 id="aws서비스에-대해-새롭게-배운-점들을-정리해요">AWS서비스에 대해 새롭게 배운 점들을 정리해요.</h3>
<p>오늘 와서 한것들이 다 새로웠다. 어떤 스토리에서 어떻게 써야하는지 AWS 서비스들간의 관계의 흐름을 알 수 있었다.</p>
<h3 id="aws-jam에서-배운-내용이-실제-업무에-어떻게-적용될-수-있을까요">AWS JAM에서 배운 내용이 실제 업무에 어떻게 적용될 수 있을까요?</h3>
<p>아예 모르는 상태는 아니기에 찾아찾아 사용할 수 있지 않을까 싶다.</p>
<h3 id="aws-jam-추천하시나요">AWS JAM 추천하시나요?</h3>
<p>추천하고 해볼 수 있으면 해보는게 좋다고 생각한다.</p>
<h4 id="찐후기">찐후기</h4>
<p>밀크티 맛있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Node.js & NPM]]></title>
            <link>https://velog.io/@bong-suk/Node.js-NPM</link>
            <guid>https://velog.io/@bong-suk/Node.js-NPM</guid>
            <pubDate>Mon, 18 Nov 2024 05:00:19 GMT</pubDate>
            <description><![CDATA[<p>Node.js가 등장한 이유에 대해 간단하게 설명하세요.
-javascript를 브라우저 밖에서 쓸 수 있게 하자는 아이디어에서 등장했습니다.</p>
<p>Node.js의 장점을 들어 Node.js를 사용하는 이유에 대해 설명하세요.
-node.js는 자바스크립트 기반이기 때문에 프론트엔드와 백엔드 모두 같은 언어를 사용할 수 있고, 이로 인해 개발 시간을 단축시켜주고 코드 유지보수를 훨씬 용이하게 해 줍니다. node.js는 npm이라는 패키지 관리 시스템이 있기 때문에 전 세계 개발자들이 만든 수많은 오픈 소스 라이브러리와 모듈을 쉽게 설치하고 사용할 수 있습니다. 이로 인해 개발 속도를 높이고 코드 품질을 향상시킬 수 있습니다.</p>
<p>NPM을 사용해서 프로젝트에 패키지를 활용하는 명령어를 작성하세요
<img src="https://velog.velcdn.com/images/bong-suk/post/c9872ec3-5567-4935-a6b4-2f96c9ee902d/image.png" alt=""></p>
<p>package.json 파일의 역할과 중요성에 대해 설명하세요
-역할 : 프로젝트의 이름,버전, 설명, 작성자, 라이선스 등을 저장하고, npm start나 npm test로 개발 과정을 자동화하고 효율성을 높입니다.</p>
<ul>
<li>중요성 : 프로젝트 공유 및 재사용이 가능하고, 유지보수가 편하며 버전 정보를 명확하게 관리하여 다른 라이브러리나 x 호환성 문제를 예방할 수 있습니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[비동기 데이터 통신]]></title>
            <link>https://velog.io/@bong-suk/%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0</link>
            <guid>https://velog.io/@bong-suk/%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%86%B5%EC%8B%A0</guid>
            <pubDate>Mon, 28 Oct 2024 06:28:32 GMT</pubDate>
            <description><![CDATA[<h3 id="http">HTTP</h3>
<p>HTTP(Hyper Text Transfer Protocol)는 웹 브라우저와 웹 서버가 데이터를 주고 받을 수 있게 디자인된 통신 규약이다.
우리가 웹을 통해서 데이터를 주고 받을 때 그 데이터를 주고 받는 방식의 이름이 HTTP이다.
HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 이 규약을 암호화하여 보안을 확보한 규약을 HTTPS라 한다.</p>
<h3 id="http-통신">HTTP 통신</h3>
<p>클라이언트(사용자)가 서버(호스트)에 요청 메시지를 보내고 이에 대해 서버가 응답 메시지를 반환한다. 서버는 응답 메시지를 반환한 후에 초기 상태로 돌아간다. 이러한 특징으로 인해 HTTP를 stasteless 규약이라고도 한다.</p>
<h3 id="http-요청과-응답---요청">HTTP 요청과 응답 - 요청</h3>
<p>요청 메세지는 요청 행, 요청 헤더, 메시지 본문으로 구성된다.</p>
<ul>
<li>요청 행 : 요청 메소드,URL,HTTP 버전 정보 등을 포함한다.</li>
<li>요청 헤더 : 메시지 정보, 메세지에 저장한 데이터 정보 등을 포함한다.</li>
<li>메시지 본문 : 서버 측으로 보내는 데이터를 포함한다.
=&gt;요청 메소드란? GET,POST 등 데이터 송수신 방식을 지정한 것</li>
</ul>
<h3 id="http-요청과-응답---응답">HTTP 요청과 응답 - 응답</h3>
<p>응답도 마찬가지로 요청과 같이 3가지로 나뉘어진다.</p>
<ul>
<li>요청 행 : 상태 코드,보충 메시지,HTTP 버전 정보 등을 포함한다.</li>
<li>요청 헤더 : 메시지 정보, 메세지에 저장한 데이터 정보 등을 포함한다.</li>
<li>메시지 본문 : 클라이언트 측으로 보내는 데이터를 포함한다.
=&gt; 상태 코드란? 요청이 성공적으로 완료되었는지를 보여주는 숫자 코드</li>
</ul>
<h4 id="주요-상태-코드">주요 상태 코드</h4>
<p>상태 코드는 요청이 성공적으로 완료되었는지를 보여주는 숫자 코드이며, 각 숫자마다 의미가 정해져 있다.
<img src="https://velog.velcdn.com/images/bong-suk/post/5f485bb4-2f16-413e-886f-81b3a4c48579/image.png" alt=""></p>
<h4 id="xmlhttprequest">XMLHttpRequest</h4>
<p>XMLHttpRequest는 서버와 상호작용하기 위해 사용하는 자바스크립트 빌트인 생성자이다. 이를 이용하면 서버(URL)로부터 데이터를 받아와 전체 페이지의 새로고침 없이도 페이지의 일부만 업데이트하는 비동기 방식의 데이터 통신을 수행할 수 있다.
이러한 프로그래밍 기법을 Ajax라 한다! Ajax(Asynchronous JavaScript And XML)는 웹 서버와 비동기로 통신하고 dom을 이용하여 웹 페이지를 동적으로 갱싱하는 프로그래밍 기법을 말한다.</p>
<h4 id="xmlhttprequest-사용-흐름">XMLHttpRequest 사용 흐름</h4>
<p>Ajax 기법에 기초한 XMLHttpRequest 비동기 통신은 다음 세 단계를 거친다.</p>
<ul>
<li>XMLHttpRequest 객체를 생성한다.</li>
<li>서버와 통신할 때 필요한 정보 및 처리 방법 등을 기입한다.</li>
<li>요청을 전송해 통신을 시작한다!
=&gt;객체 생성은 new 연산</li>
</ul>
<h4 id="이벤트-핸들링">이벤트 핸들링</h4>
<p>비동기 통신을 할 때는 서버와의 통신 상태를 감시할 수 있다. 그리고 이때 발생하는 이벤트에 대한 이벤트 핸들러를 등록할 수 있다. 아래는 XMLHttpRequest 객체의 주요 이벤트 몇 가지를 정리한 표이다.
<img src="https://velog.velcdn.com/images/bong-suk/post/c6a42014-44c9-4e38-bffe-e3c9103f2015/image.png" alt=""></p>
<h3 id="요청-초기화-및-전송">요청 초기화 및 전송</h3>
<p>서버에 요청을 보낼 때는 XMLHttpRequest  객체의 open 메소드로 요청을 초기화하고, 이후 send 메소드로 보내주는 순서로 작업을 한다.</p>
<pre><code class="language-javascript">// open 메소드 사용시 기본 형태
const request = new XMLHttpRequest()
request.open(&quot;HTTP메소드&quot;, &quot;서버URL&quot;)

//초기화는 했고, 이제 요청 보내기
request.send()</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[javascript 로컬 저장소]]></title>
            <link>https://velog.io/@bong-suk/javascript-%EB%A1%9C%EC%BB%AC-%EC%A0%80%EC%9E%A5%EC%86%8C</link>
            <guid>https://velog.io/@bong-suk/javascript-%EB%A1%9C%EC%BB%AC-%EC%A0%80%EC%9E%A5%EC%86%8C</guid>
            <pubDate>Fri, 25 Oct 2024 04:25:42 GMT</pubDate>
            <description><![CDATA[<h3 id="windowlocalstorage">window.localStorage</h3>
<p>이 속성은 현재 도메인의 로컬 저장소에 접근할 수 있게 해주는 속성이다.
웹브라우저에서 각 도메인에 대해 할당해주는 저장 공간으로, 여기에는 데이터를 영구적으로 보관할 수 있다.
데이터 보관 시에는 데이터의 이름과 데이터의 실제 값을 각각 지정하며, 이때 데이터 타입은 문자열 형태만 허용된다.</p>
<ul>
<li>영구적으로 보관한다?
브라우즈럴 껏따가 켜거나 페이지를 새로고침을 해도 해당 도메인에 데이터가 남아있도록 할 수 있다는 뜻이다.</li>
<li>크롬 기준, 개발자 도구의 application 탭에서 조회가능하다.</li>
</ul>
<h4 id="localstorage-사용법">localStorage 사용법</h4>
<p>로컬스토리지부터 데이터를 읽거나 쓸 때에는 메소드를 이용해 접근한다.
<img src="https://velog.velcdn.com/images/bong-suk/post/126bc887-2594-4507-acfe-b8f10f407d11/image.png" alt="">
로컬스토리지의 데이터 이름은 중복될 수 없다.</p>
<h3 id="배열-메소드">배열 메소드</h3>
<p><img src="https://velog.velcdn.com/images/bong-suk/post/7ca1e3d0-5790-4838-b2a4-71a4ddfc1b06/image.png" alt="">
두 메소드의 공통점은</p>
<ol>
<li>콜백함수를 인수로 전달받는다.</li>
<li>배열의 멤버를 기반으로 새로운 배열을 생성한다.</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSON?]]></title>
            <link>https://velog.io/@bong-suk/JSON</link>
            <guid>https://velog.io/@bong-suk/JSON</guid>
            <pubDate>Fri, 25 Oct 2024 03:30:14 GMT</pubDate>
            <description><![CDATA[<h3 id="json">JSON?</h3>
<ul>
<li>자바스크립트 객체 표기법을 뜻하며, 이는 자바스크립트 객체를 문자열로 표현하는 데이터 포맷이다.</li>
<li>주로 자바스크립트에서 사용할 수 있는 객체 타입을, 다른 프로그래밍 언어에서도 사용할 수 있는 형태(문자열)로 변환하기 위해 사용한다.</li>
</ul>
<h4 id="json-형식으로-쓰게-되면">JSON 형식으로 쓰게 되면</h4>
<p>JSON 형식은 자바스크립트 객체 리터럴 표기법에 기반을 두고 있다.
객체 키와 문자열은 따옴표로 묶어야하나, 나머지는 그대로 표기할 수 있다.</p>
<pre><code class="language-javascript">const goku0bject = {
  name: &quot;손오공&quot;,
  race: &quot;사이어인&quot;,
  skills: [
    &quot;에네르기파&quot;,
    &quot;계왕권&quot;,
    &quot;원기옥&quot;,
    &quot;순간이동&quot;
    ]
}</code></pre>
<p>이건 객체 리터럴이고</p>
<pre><code class="language-javascript">const gokuJSON = `{
&quot;name&quot;:&quot;손오공&quot;,
&quot;race&quot;:&quot;사이어인&quot;,
&quot;skills&quot;: [
&quot;에네르기파&quot;,
&quot;계왕권&quot;,
&quot;원기옥&quot;,
&quot;순간이동&quot;
]
}`</code></pre>
<p>이건 JSON 문자열이다.</p>
<h3 id="내장-객체-json">내장 객체 JSON</h3>
<p>두 가지의 메소드가 있다. 객체를 JSON 형식 문자열로 변환하거나, 그 반대의 환원도 진행 할 수 있다.</p>
<p><img src="https://velog.velcdn.com/images/bong-suk/post/c09ed503-fd59-49ea-bee4-0807d9265304/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[javascript 객체 만들기]]></title>
            <link>https://velog.io/@bong-suk/javascript-%EA%B0%9D%EC%B2%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@bong-suk/javascript-%EA%B0%9D%EC%B2%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Fri, 25 Oct 2024 01:38:51 GMT</pubDate>
            <description><![CDATA[<h3 id="객체-리터럴">객체 리터럴</h3>
<p>객체를 구성하는 속성(값이나 기능)의 이름과 실제 값을 한 쌍으로 묶어 표현하는 &#39;객체 리터널&#39;을 이용하면 객체를 생성할 수 있다.
이 때 속성의 이름을 키(key), 속성의 실제 값을 밸류(value)라 한다.</p>
<pre><code class="language-javascript">const cat = {
name: &quot;국희&quot;,
town: &quot;부천&quot;
}</code></pre>
<p>여기서 name과 town은 키, &quot;국희&quot;와 &quot;부천&quot;은 밸류!</p>
<h4 id="밸류가-함수면-당연히-메소드다">밸류가 함수면? 당연히 메소드다.</h4>
<p>속성의 밸류로 함수가 주어지면, 이속성은 메소드가 된다.</p>
<pre><code class="language-javascript">const cat = {
name: &quot;국희&quot;,
town: &quot;부천&quot;,
eat: function(){
  console.log(&quot;밥 먹는다&quot;)
},
  scratch: function(){
    console.log(&quot;건드리면 문다.&quot;)
  }
}</code></pre>
<ul>
<li>중요! 키는 중복될 수 없고 밸류는 중복이 되도 상관이 없다!</li>
</ul>
<h3 id="객체-리터널로-속성에-접근">객체 리터널로 속성에 접근!</h3>
<p>객체 안의 속성 값을 참조할 때 도트(.)연산자 or 대괄호([]) 연사자를 사용할 수 있다.</p>
<pre><code class="language-javascript">//도트 연산자를 사용할 때
console.log(cat.town) // 부천
cat.scratch() // 건드리면 문다.

//대괄호 연산자를 사용할 때
console.log(cat[&#39;name]) //국희
cat[&#39;eat]() // 밥 먹는다             </code></pre>
<ul>
<li>중요포인트! 속성 이용에 키를 쓰므로 키는 중복될 수 없다.</li>
</ul>
<h3 id="스프레드-연산자">스프레드 연산자</h3>
<p>객체 리터럴의 요소 목록을 펼칠 수 있다. 전개 구문, 전개 연산자 등으로 불린다.
(펼치다 = spread)
객체 리터럴에 대해 스프레드 연산을 수행하면, 구성 요소를 그대로 복사한다.</p>
<pre><code class="language-javascript">const bird = {
  parrot: &quot;앵무새&quot;,
  chichen: &quot;닭&quot;
}
const animal = {
  ...bird,
  dog: &quot;강아지&quot;
}
console.log(animal)</code></pre>
<p>이렇게 스프레드 연산을 하면 parrot: &#39;앵무새&#39;, chichen:&#39;닭&#39;, dog:&#39;강아지&#39;로 나오게 된다.
배열의 요소에도 사용이 가능하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[javascript Math]]></title>
            <link>https://velog.io/@bong-suk/javascript-Math</link>
            <guid>https://velog.io/@bong-suk/javascript-Math</guid>
            <pubDate>Thu, 24 Oct 2024 05:02:02 GMT</pubDate>
            <description><![CDATA[<h3 id="빌트인-객체-math">빌트인 객체 Math</h3>
<p>Math는 수와 관련된 속성과 메소드를 가진 내장 객체이다! 생성자 아님 주의</p>
<pre><code class="language-javascript">new Math() //오류납니다.

Math.메소드()
Math.속성 //이렇게 사용해야 합니다.</code></pre>
<p>자주 사용되는 메소드 종류!
<img src="https://velog.velcdn.com/images/bong-suk/post/7320e63e-bb60-44fc-a36b-427fa9087002/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[javascript 배열,classList]]></title>
            <link>https://velog.io/@bong-suk/javascript-%EB%B0%B0%EC%97%B4</link>
            <guid>https://velog.io/@bong-suk/javascript-%EB%B0%B0%EC%97%B4</guid>
            <pubDate>Thu, 24 Oct 2024 02:20:44 GMT</pubDate>
            <description><![CDATA[<h3 id="배열">배열</h3>
<p>여러 개의 데이터를 보관하는 역할을 수행하는 객체이다.
이전까지 변수(또는 상수)에는 데이터를 하나씩만 대입할 수 있었지만, 배열을 사용하면 여러 개의 데이터를 대입할 수 있다.</p>
<pre><code class="language-javascript">let number = 3; //숫자 1개 대입
let numbers = [1, 2, 3]//배열을 이용해 숫자 세 개 대입!</code></pre>
<h3 id="배열을-만드는-두-가지-방법">배열을 만드는 두 가지 방법</h3>
<ol>
<li><p>배열 리터럴
쉼표로 구분한 값을 대괄호로 묶어서 표현</p>
<pre><code class="language-javascript">const arr = [1, 2, 3, 4, 5, 6, 7, 8] </code></pre>
</li>
<li><p>Array 생성자로 생성하기!
배열을 만드는데 사용하는 기본 내장 생성자가 존재한다.</p>
<pre><code class="language-javascript">const arr = new Array(1, 2, 3, 4, 5, 6, 7, 8)</code></pre>
</li>
</ol>
<h3 id="배열의-특징">배열의 특징</h3>
<p>배열 객체를 다루기 위해 알아두어야 할 몇 가지 특징들.</p>
<ul>
<li>배열에 포함된 값 하나하나를 &#39;배열요소&#39;라고 한다.</li>
<li>각 배열 요소는 왼쪽부터 순서(번호)가 매겨진다. 이를 &#39;인덱스 번호&#39;라고 한다.</li>
<li>인덱스 번호는 0부터 시작한다.</li>
<li>배열 요소 수는 원하는 개수만큼 포함시킬 수 있으며, 0개일 수도 있다.</li>
<li>다양한 유형의 데이터를 포함할 수 있다. 숫자,문자열, 객체 등</li>
</ul>
<h4 id="인덱스-번호의-중요성">인덱스 번호의 중요성</h4>
<p>대괄호([])연산자를 이용해서 특정 인덱스 번호의 배열 요소를 참조할 수 있다. 참조할 수 있다는 것은 곧 읽거나 쓸 수 있다는 것을 의미한다.</p>
<pre><code class="language-javascript">const ohMyGirl = [&quot;효정&quot;, &quot;미미&quot;, &quot;유아&quot;, &quot;승희&quot;, &quot;지호&quot;, &quot;비니&quot;, &quot;아린&quot;]
console.log(ohMyGirl[0])//효정
console.log(ohMyGirl[2])//유아
console.log(ohMyGirl[5])//비니
console.log(ohMyGirl[9])//undefined!!

ohMyGirl[0] = &quot;갓효정&quot; //원래 효정이였지만, 갓효정으로 변경!
console.log(ohMyGirl)[0] //갓효정으로 나온다.</code></pre>
<h3 id="배열-메소드">배열 메소드</h3>
<p>배열은 객체이기에 메소드가 다수 정의되어 있다.(속성도)
유용하고 대표적인 메소드 몇가지만 적어 놓겠다.
<img src="https://velog.velcdn.com/images/bong-suk/post/542477a8-26df-457f-a63e-609d5fe11d39/image.png" alt="">
종류가 너무나 다양하고 많아 다 보는것은 불가능하다. 그러므로 구글을 잘 이용하자!</p>
<h3 id="elementclasslist">Element.classList</h3>
<p>classList 속성은 웹 요소(Element)로부터 클래스 콜렉션을 반환하는 속성이다.</p>
<pre><code class="language-javascript">&lt;p class = &quot;hello greet good&quot;&gt;
  안녕하세요
&lt;/p&gt;

const p = document.querySelector(&#39;p&#39;)
console.log(p.classList)</code></pre>
<p>classlist를 사용하면 0:hello 1:greet 2:good 이렇게 나뉘어지는 것을 볼 수 있다.</p>
<h4 id="관련-메소드">관련 메소드</h4>
<p><img src="https://velog.velcdn.com/images/bong-suk/post/a09b1a34-e956-4fb7-bd62-6166a5d4e9d2/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[빌트인 생성자]]></title>
            <link>https://velog.io/@bong-suk/%EB%B9%8C%ED%8A%B8%EC%9D%B8-%EC%83%9D%EC%84%B1%EC%9E%90</link>
            <guid>https://velog.io/@bong-suk/%EB%B9%8C%ED%8A%B8%EC%9D%B8-%EC%83%9D%EC%84%B1%EC%9E%90</guid>
            <pubDate>Wed, 23 Oct 2024 02:07:58 GMT</pubDate>
            <description><![CDATA[<h3 id="빌트인-생성자">빌트인 생성자</h3>
<p>자바스크립트는 개발자의 편의를 위해 유용한 기능을 제공하는 빌트인 생성자 또는 빌트인 객체를 지원한다.</p>
<ul>
<li>빌트인 생성자 : JavaScript에 새로운 객체를 생성하기 위한 <strong>내장함수</strong>입니다.<ul>
<li>이를 이용하여 객체를 생성할 수 있습니다.</li>
<li>ex ) <code>Object()</code>, <code>Array()</code>, <code>Date()</code></li>
</ul>
</li>
<li>빌트인 객체 : JavaScript에 이미 정의되어 있는 <strong>객체</strong>입니다.<ul>
<li>이를 이용하여 값이나 기능을 호출할 수 있습니다.</li>
<li>별도의 선언 없이 사용할 수 있습니다.</li>
<li>ex ) <code>Math</code>, <code>Date</code>, <code>Array</code></li>
</ul>
</li>
</ul>
<h3 id="빌트인-생성자-date">빌트인 생성자 Date</h3>
<p>날짜와 시간을 처리하는 다양한 메소드가 정의된 빌트인 생성자이다.</p>
<pre><code class="language-javascript">// 코드가 실행되는 시점의 날짜와 시간 정보를 담은 객체
const now = new Date()

//2008년 6월 10일의 날짜와 시간 정보를 담은 객체
const then = new Date(2008, 5, 10)

//date 객체끼리는 밀리초 단위로 연산된다
const interval = now - then
console.log(interval) //419184288514 -참고만</code></pre>
<p>메서드    기능    특이사항
getFullYear    연도를 뜻하는 숫자 값 반환함<br>getMonth    월을 뜻하는 숫자 값 반환함    0부터 시작하므로 1월 → ‘0’ 반환
getDate    날짜를 뜻하는 숫자 값 반환함<br>getDay    요일을 뜻하는 숫자 값 반환함    0부터 시작하므로 일요일 → ‘0’ 반환
getHours    시각 중 시간을 나타내는 숫자 반환함<br>getMinutes    시각 중 분을 나타내는 숫자 반환함<br>getSeconds    시각 중 초를 나타내는 숫자 반환함<br>toLocaleString    지역 날짜 및 시간 문자열 반환함    ‘2021/09/17 16:30:45’ 형식</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[객체를 만드는 생성자]]></title>
            <link>https://velog.io/@bong-suk/%EA%B0%9D%EC%B2%B4%EB%A5%BC-%EB%A7%8C%EB%93%9C%EB%8A%94-%EC%83%9D%EC%84%B1%EC%9E%90</link>
            <guid>https://velog.io/@bong-suk/%EA%B0%9D%EC%B2%B4%EB%A5%BC-%EB%A7%8C%EB%93%9C%EB%8A%94-%EC%83%9D%EC%84%B1%EC%9E%90</guid>
            <pubDate>Wed, 23 Oct 2024 01:59:19 GMT</pubDate>
            <description><![CDATA[<h3 id="객체에-내릴-수-있는-명령">객체에 내릴 수 있는 명령?</h3>
<blockquote>
<p><strong>객체.데이터</strong>
(객체가 가지고 있는 숫자, 문자 등의 다양한 데이터를 사용할 수 있고 객체가 가지고 있는 데이터를 가르켜 일반적으로 &#39;속성&#39;이라고 한다.)
<strong>객체.기능()</strong>
(객체가 가지고 있는 다양한 기능을 수행할 수 있다.(괄호 필수).
객체가 가지고 있는 기능을 가리켜 일반적으로 &#39;메소드&#39;라고 한다.</p>
</blockquote>
<p>즉, 자바스크립트 코드 내에서 객체란 &#39;값 또는 기능을 가지고 있는 데이터&#39;이다.
그리고 개발자는 자신이 원하는 값이나 기능으로 구성된 객체를 직접 만들 수 있다!</p>
<h3 id="객체를-만드는-생성자">객체를 만드는 생성자</h3>
<p>생성자란 객체를 생성할 때 사용하는 함수로서, &#39;생성자 함수&#39;라고도 한다.
사용할 기능을 정의한 일반 함수와 생성자 함수 사이에 특별한 문법적 차이는 존재하지 않는다.
즉, 함수는 생성자 역할을 할 수 있다.
단. 생성자 함수는 객체생성을 목적으로 만드는 것이다.</p>
<h4 id="생성자의-쓸모">생성자의 쓸모?</h4>
<p>자바스크립트가 제공하지 않는 유형의 데이터를 창조할 수 있다.</p>
<h3 id="키워드-this-사용하기">키워드 this 사용하기</h3>
<p>생성자 함수 정의 시 this 키워드는 객체 그 자신을 의미한다. this를 이용해 해당 객체의 속성이나 메소드를 추가할 수 있다.</p>
<pre><code class="language-javascript">//강아지를 표현하는 &#39;dog&#39;객체를 만들고 싶다
function Dog(){
this.name = &quot;콩이&quot;
this.breed = &quot;시츄&quot;
}</code></pre>
<p>일반적으로, 생성자 함수명의 첫글자는 대문자로 한다.(필수가 아닌 관례)</p>
<h3 id="객체-생성은-new-연산자로">객체 생성은 new 연산자로!</h3>
<p>생성자 함수는 &#39;객체를 이렇게 만들겠습니다.&#39;에 대한 정의일 뿐이며, 실제 객체가 생성되 기 위해서는 new 연산을 통해 객체를 반환해야 한다.</p>
<pre><code class="language-javascript">function Dog(){
this.name = &quot;콩이&quot;
this.breed = &quot;시츄&quot;
}
//Dog 객체를 생성하고, myDog 라는 이름을 붙이겠다
const myDog = new Dog();
console.log(myDog.name) //콩이
console.log(myDog.breed) //시츄</code></pre>
<h4 id="생성자-하나로-여러-개-만들기">생성자 하나로 여러 개 만들기</h4>
<p>생성자 함수는 &#39;객체를 이렇게 만들겠습니다.&#39;에 대한 정의, 즉 &#39;설계도&#39;의 역할이며 생성자 함수 하나로 객체를 여러 개 만들 수 있다.</p>
<pre><code class="language-javascript">//생성자에도 매개변수를 정의할 수 있다.
function Dog(eachName, eachBreed){
  this.name = eachName
  this.breed = eachBreed
}

//생성 시에도 인자를 전달할 수 있다.
const one = new Dog(&quot;바둑이&quot;,&quot;진돗개&quot;);
const two = new Dog(&quot;하나코&quot;, &quot;시바견&quot;);
const three = new Dog(&quot;마르코&quot;, &quot;셰퍼드&quot;);</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[switch문]]></title>
            <link>https://velog.io/@bong-suk/switch%EB%AC%B8</link>
            <guid>https://velog.io/@bong-suk/switch%EB%AC%B8</guid>
            <pubDate>Mon, 21 Oct 2024 08:57:42 GMT</pubDate>
            <description><![CDATA[<h3 id="switch문이란">switch문이란?</h3>
<ul>
<li>선택문인 switch문은 변수에 저장된 값과 switch문에 있는 경우(case)의 값을 검사하여 변수와 경우의 값에서 일치하는 값이 있을 때 그에 해당하는 코드를 실행한다.</li>
</ul>
<h4 id="switch문과-함께-쓰이는-명령어들">switch문과 함께 쓰이는 명령어들</h4>
<ul>
<li><p>break : switch문을 빠져나올 때 사용한다.</p>
</li>
<li><p>default : 목록 중에 없는 경우 default문의 내용을 무조건 수행한다.</p>
<h4 id="switch문과-break">switch문과 break</h4>
<pre><code class="language-javascript">switch(30) {
 case 10 : document.write(&quot;SEOUL&quot;) ; break;
 case 20 : document.write(&quot;JEJU&quot;) ; break;
 case 30 : document.write(&quot;BUSAN&quot;) ; break;
} // switch
</code></pre>
</li>
</ul>
<p>switch문 옆에 30이란 숫자가 보인다. 
 이 말은 아래의 case 문의 여러가지 경우 중 30의 값과 일치하는 경우일 때 case 30의 값을 출력하라는 뜻이다. 
 switch문이 30값을 가진 case 30을 찾아서 BUSAN이란 단어를 출력하라는 코드를 받고, 
 그 뒤의 break 명령어로 인해 switch문을 빠져나오게 되어 BUSAN이 화면에 출력되게 된다.</p>
<h4 id="switch문과-default">switch문과 default</h4>
<p> default 명령어는 switch의 값이 아래의 case 중 일치하는 것이 없을 때 출력하라는 뜻이다.</p>
<p> 위의 코드에 default 문을 추가로 하고 swtich의 값도 변경했다.</p>
<pre><code class="language-javascript">switch(40) {
    case 10 : document.write(&quot;SEOUL&quot;) ; break;
    case 20 : document.write(&quot;JEJU&quot;) ; break;
    case 30 : document.write(&quot;BUSAN&quot;) ; break;
    default : document.write(&quot;기타...&quot;); break;
} // switch end</code></pre>
<p>이렇게 코드를 넣으면 switch의 값이 case 중에는 일치하는 것이 없기에 default의 값인 &quot;기타...&quot;가 출력되게 된다.</p>
<h4 id="만약-break문이-없게-되면">만약 break문이 없게 되면?</h4>
<pre><code class="language-javascript">switch(20) {
    case 10 : document.write(&quot;SEOUL&quot;) ; break;
    case 20 : document.write(&quot;JEJU&quot;) ;
    case 30 : document.write(&quot;BUSAN&quot;) ; break;
    default : document.write(&quot;기타...&quot;); break;
} // switch end</code></pre>
<p>JEJUBUSAN이 출력이 된다. 이유는 switch의 값이 20이므로 case 20의 값이 출력이 되나 break가 없기에 빠져나오지 못하고 그 밑에 있는 BUSAN까지 가서 출력이 된 것이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript (논리,병합 연산자)]]></title>
            <link>https://velog.io/@bong-suk/JavaScript-%EB%85%BC%EB%A6%AC%EB%B3%91%ED%95%A9-%EC%97%B0%EC%82%B0%EC%9E%90</link>
            <guid>https://velog.io/@bong-suk/JavaScript-%EB%85%BC%EB%A6%AC%EB%B3%91%ED%95%A9-%EC%97%B0%EC%82%B0%EC%9E%90</guid>
            <pubDate>Mon, 21 Oct 2024 06:22:44 GMT</pubDate>
            <description><![CDATA[<h2 id="논리-연산자">논리 연산자</h2>
<ul>
<li>자바 스크립트엔 세 종류의 논리 연산 ||(or), &amp;&amp;(and), !(not) 이 있다.</li>
</ul>
<h3 id="or">||(or)</h3>
<ul>
<li>값을 비교 시 둘 중 하나라도 참(true) 일시 참(true)를 반환하고, 그렇지 않으면 (거짓)false 반환<pre><code class="language-javascript">console.log( true || true); //true
console.log( true || false); // true
console.log( false || false); //false
console.log( false || true); //true</code></pre>
</li>
</ul>
<h3 id="첫-번째-truthy를-찾는-or-연산자-">첫 번째 truthy를 찾는 OR 연산자 ‘||’</h3>
<ul>
<li>truthy란? 자바스크립트에서 논리 타입이 아닌 값을 암묵적으로 참으로 평가한 값을 의미한다.<pre><code class="language-javascript">result = value1 || value2 || value3;</code></pre>
</li>
<li>가장 왼쪽 피연사자부터 시작해 오른쪽으로 나아가면 피연사자를 평가한다.</li>
<li>각 피연산자를 불린형으로 변환하고 변환한 값이 참(true)면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환한다.</li>
</ul>
<p>예시 2번째</p>
<pre><code class="language-javascript">let firstName = &quot;&quot;;
let lastName = &quot;&quot;;
let nickName = &quot;바이올렛&quot;;

alert( firstName || lastName || nickName || &quot;익명&quot;); // 바이올렛
</code></pre>
<p>or을 사용하면 실제 값이 들어있는 변수를 찾고, 그 값을 보여줄 수 있다.</p>
<h3 id="단락평가">단락평가?</h3>
<ul>
<li>or은 왼쪽부터 시작해서 오른쪽으로 평가를 진행하는데, truthy를 만나면 나머지 값들은 건드리지 않은 채 평가를 멈춘다. 이런 프로세스를 &#39;단락 평가&#39;라고 한다.
예시를 들어<pre><code class="language-javascript">true || alert(&quot;not printed&quot;);
flase || alert(&quot;printed&quot;);</code></pre>
단락 평가는 연산자 왼쪽 조건이 falsy일 때만 명령어를 실행하고자 할 때 자주 쓰인다.</li>
</ul>
<h3 id="and">&amp;&amp;(and)</h3>
<ul>
<li>AND 연산자는 연산자 왼쪽과 오른쪽의 값이 모두 참이면 참, 한 쪽이라도 거짓이면 거짓을 반환한다.<pre><code class="language-javascript">console.log(true &amp;&amp; true) // true
console.log(true &amp;&amp; false) // false
console.log(false &amp;&amp; true) // false
console.log(false &amp;&amp; false) // false</code></pre>
</li>
</ul>
<h3 id="첫-번째-falsy를-찾는-and-연산자-">첫 번째 falsy를 찾는 AND 연산자 &#39;&amp;&amp;&#39;</h3>
<ul>
<li>falsy란? 쉽게 말해 if문의 조건으로 넣었을때 false로 변환되는 겂을 의미한다.<pre><code class="language-javascript">result = value1 || value2 || value3;</code></pre>
</li>
<li>가장 왼쪽 피연사자부터 시작해 오른쪽으로 나아가면 피연사자를 평가한다.</li>
<li>각 피연산자를 불린형으로 변환하고 변환한 값이 거짓(false)이면 연산을 멈추고 해당 피연산자의 변환 전 원래 값을 반환한다.</li>
</ul>
<h3 id="not">!(not)</h3>
<ul>
<li>위의 두개에 비하면 아주 간단 연산자이다.
result = !조건 끝이다.
!(not)는 참은 거짓으로, 거짓은 참으로 바꾸는 연산자이다.</li>
</ul>
<h3 id="병합-연산자-">병합 연산자 &#39;??&#39;</h3>
<ul>
<li>nullish 병합 연사자 &#39;??&#39;를 사용하면 짧은 문법으로 여러 피연산자 중 그 값이 &#39;확정되어 있는&#39; 변수를 찾을 수 있다.
예를 들어 a ?? b라 하면 a가 null도 아니고 undefined도 아니면 a 그 외는 b이다.<pre><code class="language-javascript">let firstName = null;
let lastName = null;
let nickName = &quot;바이올렛&quot;;
</code></pre>
</li>
</ul>
<p>// null이나 undefined가 아닌 첫 번째 피연산자
alert(firstName ?? lastName ?? nickName ?? &quot;익명의 사용자&quot;); // 바이올렛</p>
<pre><code>
#### &#39;??&#39;(병합 연산자)와 ||(or)의 차이?
* &#39;||&#39; 은 첫번째 truthy 값 반환
* &#39;??&#39;은 첫번쨰 정의된(defined) 값을 반환
--&gt; null, undefinde, 숫자 0 을 구분해야할 때 위의 차이가 중요!
```javascript
let height = 0;

alert(height || 100); // 100
alert(height ?? 100); // 0</code></pre><h3 id="연산자-우선순위">연산자 우선순위?</h3>
<p> <img src="https://velog.velcdn.com/images/bong-suk/post/db37001d-d678-4d48-80c4-a5925439317f/image.png" alt="">
1순위 부터 우선 적용됨</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[value 속성]]></title>
            <link>https://velog.io/@bong-suk/value-%EC%86%8D%EC%84%B1</link>
            <guid>https://velog.io/@bong-suk/value-%EC%86%8D%EC%84%B1</guid>
            <pubDate>Mon, 21 Oct 2024 05:30:53 GMT</pubDate>
            <description><![CDATA[<h3 id="값-요소-불러들이기">값 요소 불러들이기</h3>
<p>(input)(select)처럼 사용자로부터 입력을 받는데 사용 되는 요소들이 있다. 여기에서 사용자가 입력한 값을 읽어들일 때는 요소의 value 속성을 써보자</p>
<ul>
<li>차이점
요소에 쓰여져 있는 텍스트에 접근한다:textContent
사용자가 직접 요소에 입력한 값에 접근하고 싶다:value</li>
</ul>
<h4 id="접근">접근?</h4>
<ul>
<li>입력 요소의 value에 접근하여 할 수 있는 일은 크게 두 가지, 읽기와 쓰기다.<pre><code class="language-javascript">//대상 요소의 사용자 입력값을 읽어 콘솔에 출력하자!
console.log(target.value)
//대상 요소의 사용자 입력값을 &quot;변경값&quot;으로 바꾸자!
target.value = &quot;변경값&quot;</code></pre>
</li>
</ul>
<h3 id="form요소">(Form)요소</h3>
<p>여러 입력 요소를 포함할 수 있는 폼 요소로부터 여러 입력 값을 읽어들일 때는, 개별 입력 요소의 name 속성값을 토대로 입력값에 접근 할 수 있다.</p>
<p>```javascript</p>
<form>
  <input name="이름" />
    <input name="별명" />
      <input type="submit" />
        </form>

<p>const form = document.querySelector(&quot;form&quot;)
form.addEventListener(&quot;submit&quot;, function(e){
  console.log (e.target.이름.value)
  console.log (e.target.별명.value)
})</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[이벤트 핸들링]]></title>
            <link>https://velog.io/@bong-suk/%EC%9D%B4%EB%B2%A4%ED%8A%B8-%ED%95%B8%EB%93%A4%EB%A7%81</link>
            <guid>https://velog.io/@bong-suk/%EC%9D%B4%EB%B2%A4%ED%8A%B8-%ED%95%B8%EB%93%A4%EB%A7%81</guid>
            <pubDate>Mon, 21 Oct 2024 05:05:27 GMT</pubDate>
            <description><![CDATA[<h3 id="이벤트event">이벤트(event)?</h3>
<ul>
<li>웹 프로그래밍에서 이벤트란, DOM에서 발생하는 다양한 액션 또는 상호작용 동작을 나타내는 프로그래밍 인터페이스이다.
<strong>예시</strong></li>
<li>웹페이지 사용자가 버튼을 클릭(클릭 이벤트)</li>
<li>웹페이지 사용자가 키보드를 누름(키다운 이벤트)</li>
<li>입력 폼의 내용을 제출(제출 이벤트) 등</li>
</ul>
<p>다양한 상황에 대한 통칭이 이벤트이다.</p>
<h3 id="이벤트-핸들러">이벤트 핸들러?</h3>
<p>이벤트가 발생되면 실행될 코드 블록을 뜻하며, 주로 함수가 이 역할을 담당한다. 이벤트 핸들러 역할을 수행할 함수를 정의하는 것을 이벤트 핸들러 등록이라 한다.</p>
<h3 id="addeventlistener-사용하자">addEventListener() 사용하자!</h3>
<ul>
<li>onclick, onkeydown과 같은 이벤트 속성을 통해 이벤트 핸들러를 등록하는 것보다 편하고 유용한 이벤트 처리 방법은, addEventLIstener 메소를 활용하는 것이다.</li>
<li>이전에 추가한 이벤트 핸들러를 제거할 수 있는 대응 메소드가 존재한다.</li>
<li>같은 리스너(타겟)에 대해 다수의 핸들러를 등록할 수 있다.</li>
</ul>
<h3 id="이벤트-객체">이벤트 객체?</h3>
<ul>
<li>이벤트 객체는 추가적인 기능과 정보를 제공하기 위해 이벤트 핸들러에 자동으로 전달되는 데이터이다. 이를 활용하기 위해서는 이벤트 핸들러 함수에 매개변수를 추가하여 이벤트 발생 시마다 전달 받을 수 있도록 해야한다.<pre><code class="language-javascript">//click 이벤트가 발생하면 함수를 호출하겠다!
target.addEventListener(&#39;click&#39;, function(){})
</code></pre>
</li>
</ul>
<p>//click 이벤트가 발생하면 함수를 호출하겠다!
//+ 이때 자동으로 전달 되는 이벤트 객체를 매개변수 event에 대입하겠다!
target.addEventListener(&#39;click&#39;, function(event){})
```</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Javascript 함수 정의]]></title>
            <link>https://velog.io/@bong-suk/Javascript-%ED%95%A8%EC%88%98-%EC%A0%95%EC%9D%98</link>
            <guid>https://velog.io/@bong-suk/Javascript-%ED%95%A8%EC%88%98-%EC%A0%95%EC%9D%98</guid>
            <pubDate>Mon, 21 Oct 2024 04:08:42 GMT</pubDate>
            <description><![CDATA[<h3 id="함수란">함수란?</h3>
<ul>
<li>&#39;불러서 쓸 수 있는 코드 조각&#39;이다. 변수를 선언하고 데이터를 대입하면 변수의 이름을 데이터(값) 대신 사용할 수 있는 것처럼, 함수를 선언하고 기능을 정의하면 함수의 이름을 코드 조각 대신 사용할 수 있다.</li>
</ul>
<h4 id="함수를-만드는-두-가지-방법">함수를 만드는 두 가지 방법</h4>
<pre><code class="language-javascript">function 함수명(){    // 함수선언식
  // 함수의 기능을 표현한 문구
}
const 함수명 = function(){  //함수표현식
//함수의 기능을 표현한 구문
}</code></pre>
<h4 id="주의점">주의점</h4>
<p>함수가 만들어지고 나면, 함수명은 스스로 보관하고 있는 구문 대신 사용될 수 있다. 그리고 함수가 사용되기 위해서는 함수를 &#39;호출&#39;해야만 한다.</p>
<pre><code class="language-javascript">const saytHello = fuction(){
  let number = 3 + 3
  console.log (number)
}

sayHello() //함수호출</code></pre>
<ul>
<li>함수를 호출할 때는 함수의 이름 뒤에 반드시 소괄호를 붙여줘야 한다!</li>
</ul>
<h3 id="함수에-데이터-전달">함수에 데이터 전달</h3>
<p>함수 호출문은 &#39;함수명 + 소괄호&#39;이다.
소괄호의 역할은, 함수가 실행될 때 사용할 재료를 전달받는 것이다. 재료란 데이터를 뜻하며, 이렇게 전달되는 데이터를 가르켜 &#39;인수(argument)&#39;라 한다!</p>
<h4 id="인수를-전달할-수-있으려면">인수를 전달할 수 있으려면</h4>
<p>인수를 전달받아 기능을 수행하는 함수를 만들 때는, 함수 정의 시 &#39;매개변수(parameter)&#39;를 추가해야한다. 이느 ㄴ함수의 기능을 다양화하는 유용한 도구다.</p>
<h4 id="원하는-만큼-사용-가능">원하는 만큼 사용 가능.</h4>
<p>매개변수를 원하는 만큼 추가할 수 있고, 두개 이상일 경우 각각을 쉼표로 구분해주어야 한다.</p>
<h3 id="함수의-값-반환">함수의 값 반환</h3>
<p>함수를 만들 때, 함수가 데이터를 반환하도록 할 수 있다.
함수가 데이터를 반환한다는 것은, 함수 호출문이 데이터로 대체됨을 뜻한다
예로써</p>
<pre><code class="language-javascript">// 그냥 3을 출력
console.log(3)
//3을 반환하는 함수 호출문을 출력
console.log(getThree())</code></pre>
<ul>
<li>함수가 데이터를 반환하려면, &#39;이 데이터를 반환한다&#39;라는 구문을 함수 내부에 추가해 주어야 한다. 이 때 키워드 return이 사용된다.<pre><code class="language-javascript">function getThree(){
//이 함수를 호출하면, 호출문이 3을 반환할 것!
return 3;</code></pre>
return 키워드는 두 가지 기능을 가지고 있다. 데이터 반환, 그리고 함수 강제 종료!</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[if와 '?' 그리고 while과 for문]]></title>
            <link>https://velog.io/@bong-suk/if%EC%99%80-%EA%B7%B8%EB%A6%AC%EA%B3%A0-while%EA%B3%BC-for%EB%AC%B8</link>
            <guid>https://velog.io/@bong-suk/if%EC%99%80-%EA%B7%B8%EB%A6%AC%EA%B3%A0-while%EA%B3%BC-for%EB%AC%B8</guid>
            <pubDate>Sat, 19 Oct 2024 08:38:21 GMT</pubDate>
            <description><![CDATA[<h4 id="조건문의-시작은-if">조건문의 시작은 if</h4>
<p>if문의 기본 형태는 다음과 같다.</p>
<blockquote>
<pre><code class="language-javascript">if(조건){
조건이 true일 때 실행할 코드
}</code></pre>
</blockquote>
<pre><code>&gt;예시
```javascript
let age = 16
if(age &lt; 20){
console.log(&quot;미성년자입니다.)
}</code></pre><p>변수 age의 갑싱 20보다 작다, 라는 조건이 true를 반환한다면?
콘솔 창에 &quot;미성년자입니다&quot;라고 출력이 된다.</p>
<h4 id="else">else?</h4>
<p>if는 조건의 참 거짓을 나타내는 것이고 else는 조건이 거짓일 때 추가 정의를 입력한다.</p>
<blockquote>
<pre><code class="language-javascript">if(조건) {
조건이 true일 때 실행할 코드
} else {
조건이 false일 때 실행할 코드
}</code></pre>
</blockquote>
<pre><code>
→else를 추가한 if문을 if-else문이라고 부르기도 한다.
else문은 제한 없이 추가할 수 있다.

#### &#39;else if&#39;로 복수 조건 처리하기
유사하지만 약간씩 차이가 있는 조건 여러 개를 처리해야 할 때가 있다.
그 때 else if를 사용한다.
&gt;```javascript
let year = prompt(&#39;년도&#39;);
if(year&lt;2022){
aleart(&#39;숫자 올리기&#39;);
}else if(year &gt; 2022){
alert(&#39;숫자 내리기&#39;);
}else{
alert(&#39;정답&#39;);
}</code></pre><p>위 예시에서 if 조건인 year &lt; 2022를 확인하고, 이 조건이 거짓이라면 다음 조건 year &gt; 2022를 확인 후 이 조건 또한 거짓이라면 else절 내의 alert를 실행한다.</p>
<h4 id="조건부-연산자-삼향-연산-ternary-operator">조건부 연산자 &#39;?&#39;(삼향 연산 Ternary operator)</h4>
<p>가끔 코드를 짤 때, 조건에 따라 변수에 값을 할당해야 할 때가 있다.</p>
<blockquote>
<pre><code class="language-javascript">let accessAllowed;
let age = prompt(&#39;몇 살?&#39;, &#39;&#39;);
if (age &gt; 18) {
  accessAllowed = true;
} else {
  accessAllowed = false;
}
alert(accessAllowed); </code></pre>
</blockquote>
<p>위에서와 같이 나이가 18세 이상인 경우에 true를 반환하고 아니면 false를 accessAllowed라는 변수에 값을 할당 해야 할 때가 있다. 이 if~else 구문을 좀 더 간단하고 짧은 방식으로 사용하는 것을 &quot;ternary(삼항)&quot;, 또는 &quot;question mark(물음표)&quot;라고 한다.</p>
<blockquote>
<p><strong>예시</strong></p>
</blockquote>
<pre><code class="language-javascript">let result = condition ? value1 : value2;</code></pre>
<p>위의 구문에서 condition은 true나 false를 결과값으로 반환되어야할 구문이며, 이 condition이 true이면 value1을, false이면 value2를 리턴한다.
그래서.. 아까 위의 예시를 삼항연산으로 표현하자면</p>
<blockquote>
<pre><code class="language-javascript">let accessAllowed = (age &gt; 18) ? true : false;</code></pre>
</blockquote>
<pre><code>이렇게 표현할 수 있다. 그리고 age &gt; 18의 괄호 부분을 제외해도 상관없다. 그 이유는 상항연산 ?는 낮은 우선 순위에 있기 때문에 비교 연산자인 &gt;가 먼저 실행되고 그 후에 삼항 연산 ?가 실행된다.

#### 다중 삼항연산 &#39;?&#39;
물음표 연산자 ?를 연속으로 사용하면 하나 이상의 조건에 따라 값을 리턴할 수 있다.
&gt;```javascript
let age = prompt(&#39;age?&#39;, 18); 
let message = (age &lt; 3) ? &quot;Hi, Baby!&quot; :
              (age &lt; 18) ? &quot;Hello!&quot;   :
              (age &lt; 100) ? &quot;hi!&quot; :
              &quot;What?&quot;;
alert(message);</code></pre><p>이러한 문제를 </p>
<ol>
<li><p>처음 삼항 연산은 prompt에서 받은 age가 3살 보다 작은지 큰지 비교한다.</p>
</li>
<li><p>만약 true이면 &quot;Hi, Baby!&quot;라는 alert창을 띄우고, 아니면 콜론( : ) 다음의 연산인 age가 18보다 작은지 큰지를 비교한다.</p>
</li>
<li><p>만약 비교 결과가 true면 &quot;Hello!&quot;를 반환하고 아니면 다음 콜론( : )의 연산인 age가 100보다 작은지 큰지를 비교한다.</p>
</li>
<li><p>만약 비교 결과가 true면 &quot;hi!&quot;를 반환하고 아니면 마지막 콜론 ( : ) 뒤의 &quot;What?&quot;를 반환한다.</p>
</li>
</ol>
<h4 id="부적절한-">부적절한 &#39;?&#39;</h4>
<p>가끔 ?연산자는 if를 대체하여 사용하기도 하는데 이런 식으로 물음표 연산자를 사용하는 것은 좋지 않다. 코드 길이가 짧아지긴 하지만 가독성이 좋지 않다.</p>
<h4 id="반복문">반복문</h4>
<p>비슷하거나 동일한 구문을 반복해서 수행할 수 있는 구문이고 대표적으로 for문과 while문이 있다.</p>
<h3 id="for문">for문</h3>
<p>구문 작성시 반복을 위해 필요한 세 가지 요소를 한 곳에 모아 작성함으로써 직관적으로 반복 횟수를 표현할 수 있는 구문이다.</p>
<blockquote>
<p>for(초기식; 조건식; 반복식){
조건이 true인 경우 반복 수행할 코드
}</p>
</blockquote>
<p>→초기식: 반복 조건의 초기화 작업
→반복식: 반복이 한 번 끝날 때마다 실행될 작업</p>
<blockquote>
<p>예시</p>
</blockquote>
<pre><code class="language-javascript">for (let i = 1; i &lt;= 10; i++) {
  console.log(i);
}</code></pre>
<h3 id="while문">while문</h3>
<p>&#39;주어진 조건이 참일 동안에 구문을 반복하는&#39; 반복문이다.</p>
<blockquote>
<p>while(조건){
조건이 true인 동안에 반복 수행할 코드
}</p>
</blockquote>
<p>→조건이란 불리언을 반환하거나 불리언으로 해석될 수 있는 표현식!
→반복 구문은 &#39;루프&#39;라고도 한다.</p>
<blockquote>
<p><strong>예시</strong></p>
</blockquote>
<pre><code class="language-javascript">let i = 1;
while (i &lt;= 5) {
    console.log(i);
    i++;
}</code></pre>
<p>i가 1이고 i가 5보다 작거나 같을 때까지 반복한다.</p>
<h4 id="dowhile-반복문">do...while 반복문</h4>
<blockquote>
<pre><code class="language-javascript">do {
  // 조건식 계산 전 실행
  [명령문]
} while([조건식]) //조건식이 거짓이면 반복문 탈출
// 예시
let sum = 0; var i = 1;
do {
  sum = sum + i;
  i = i + 1;
} while(i &lt; 10) //sum에는 1부터 10까지의 합이 저장된다.</code></pre>
</blockquote>
<pre><code>do while문은 while문과 달리 while 문은 표현식의 참/거짓에 따라 명령을 실행하거나 하지 않지만, do while문은 do 부분의 명령을 무조건 한 번은 실행 하고 while문 표현식의 참/거짓을 검사한다는 것이다.</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Javascript 기본]]></title>
            <link>https://velog.io/@bong-suk/Javascript-%EA%B8%B0%EB%B3%B8</link>
            <guid>https://velog.io/@bong-suk/Javascript-%EA%B8%B0%EB%B3%B8</guid>
            <pubDate>Sat, 19 Oct 2024 07:30:32 GMT</pubDate>
            <description><![CDATA[<h3 id="비교연산자">비교연산자</h3>
<table>
<thead>
<tr>
<th>연산자</th>
<th align="left"><center>설명</th>
<th align="center">예시</th>
<th align="right">결과</th>
</tr>
</thead>
<tbody><tr>
<td>==</td>
<td align="left">두 값이 같은 경우 true (타입은 고려하지 않음)</td>
<td align="center">5 == &quot;5&quot;</td>
<td align="right">true</td>
</tr>
<tr>
<td>!=</td>
<td align="left">두 값이 다른 경우 true (타입은 고려하지 않음)</td>
<td align="center">5 != &quot;3&quot;</td>
<td align="right">true</td>
</tr>
<tr>
<td>===</td>
<td align="left">두 값과 타입이 모두 같은 경우 true</td>
<td align="center">5 === 5</td>
<td align="right">true</td>
</tr>
<tr>
<td>!==</td>
<td align="left">두 값 또는 타입이 다른 경우 true</td>
<td align="center">5 !== &quot;5&quot;</td>
<td align="right">true</td>
</tr>
<tr>
<td>&gt;</td>
<td align="left">왼쪽 값이 오른쪽 값보다 큰 경우 true</td>
<td align="center">10 &gt; 5</td>
<td align="right">true</td>
</tr>
<tr>
<td>&lt;</td>
<td align="left">왼쪽 값이 오른쪽 값보다 작은 경우 true</td>
<td align="center">3 &lt; 7</td>
<td align="right">true</td>
</tr>
<tr>
<td>&gt;=</td>
<td align="left">왼쪽 값이 오른쪽 값보다 크거나 같은 경우</td>
<td align="center">true    5 &gt;= 5</td>
<td align="right">true</td>
</tr>
<tr>
<td>&lt;=</td>
<td align="left">왼쪽 값이 오른쪽 값보다 작거나 같은 경우</td>
<td align="center">true    2 &lt;= 5</td>
<td align="right">true</td>
</tr>
<tr>
<td>예시:</td>
<td align="left"></td>
<td align="center"></td>
<td align="right"></td>
</tr>
</tbody></table>
<blockquote>
</blockquote>
<pre><code class="language-javascript">let a = 10;
let b = 5;
console.log(a &gt; b);   // true
console.log(a &lt; b);   // false
console.log(a == b);  // false
console.log(a != b);  // true
console.log(a === b); // false
console.log(a !== b); // true
console.log(a &gt;= b);  // true
console.log(a &lt;= b);  // false   
console.log(5 == &quot;5&quot;);  // true (타입이 달라도 값이 같으므로 true)
console.log(5 === &quot;5&quot;); // false (타입이 다르므로 false)```

* ==(동등연산자)는 &#39;추상적(abstract) 같음 비교&#39;로써 자료형이 서로 다르더라도 같다고 판단할 수 있고 ===(일치연산자)는 &#39;엄격한(strict)같음 비교&#39;로써, 자료형과 데이터가 모두 일치해야만 같다고 판단한다. 
* ==(동등연산자) 와 !=(부등 연산자) 연산자는 타입을 고려하지 않고 값만 비교합니다. 엄격한 비교를 위해서는 === 와 !== 를 사용하는 것이 좋다.
* ==(동등연산자) 와 !=(부등 연산자)는 타입을 비교하지 않기 때문에 원하는 결과 값을 반환 하지 못하는 경우가 생기기도 한다. 그렇기 때문에 값과 타입을 모두 비교하는 ===(일치연산자)와 !==(불일치 연산자)를 이용하여 값을 비교하는 것을 추천한다.

#### 불린형 반환
다른 연산자와 마찬가지로 비교 연산자 역시 값을 반환한다. 반환 값은 불린형이다.
true가 반환되면, ‘긍정’, ‘참’, &#39;사실’을 의미한다.
false가 반환되면, ‘부정’, ‘거짓’, &#39;사실이 아님’을 의미한다.  

반환된 불린값은 다른 여타 값처럼 변수에 할당 할 수 있다.
예시:
```javascript
let result = 5&gt; 4; - 비교 결과를 변수에 할당
  alert(result); - true</code></pre>
<h4 id="문자열간의-비교">문자열간의 비교</h4>
<p>JavaScript의 문자열값은 &#39;사전&#39;순(Alphabetically)으로 비교한다. &#39;사전편집(lexciographical)&#39;순이라고도 불린다. 이 순서 비교의 기준은 사전 뒤쪽의 문자열이 사전 앞쪽의 문자열보다 크다고 판단한다.
(정확히는 사전 순이 아니라 utf-16 순이다. 자바스크립트는 대 소문자를 따지기 때문에 대문자 A와 소문자 a를 비교 했을 때 소문자 a가 더 크다.)
비교 연산자를 사용해서 문자열간의 크기를 비교할 수 있다. 알파벳 순서에 따라서
크기가 결정되고, 소문자는 대문자보다 크며 z는 a보다 크다.
다만 문자열간을 비교할 때, 규칙에서 벗어나는 예외 상황이 있다.</p>
<ul>
<li>utf-16이란?
자바스크립트 문자열의 표현 방식 중 하나로 흔히 볼 수 있는 문자열 인코딩 방식이다.
우리가 사용하는 문자를 비트(bits)로 나타낸 것이다.</li>
</ul>
<blockquote>
<p>예시 </p>
</blockquote>
<pre><code class="language-javascript">  alert( &#39;a&#39; &gt; &#39;Z&#39; );    // true, 소문자는 대문자보다 크다.
alert( &#39;Österreich&#39; &gt; &#39;Zealand&#39; );    // true</code></pre>
<p>// true, 발음 구별 기호가 붙은 문자는 알파벳 순서 기준을 따르지 않음
// 발음 구별 기호가 아닌 일반 O 였다면, false가 나왓을 것</p>
<h3 id="다른-형을-가진-값-간의-비교">다른 형을 가진 값 간의 비교</h3>
<p>비교하려는 값의 자료형이 다르면 자바스크립트는 이 값들을 숫자형으로 바꾼다.</p>
<blockquote>
<p><strong>예시</strong></p>
</blockquote>
<pre><code class="language-javascript">  console.log(&#39;2&#39; &gt; 1); //true; 문자열 2(&#39;2&#39;)가 숫자 2로 변환된 후 비교
  console.log(&#39;01&#39; = 1); //true; 문자열 &#39;01&#39;이 숫자 1로 변환된 후 비교
  __boolean값의 경우 true는 1, false는 0으로 변환된 후 비교가 이루어집니다.__
  console.log(true == 1); // true
console.log(false == 0); // true</code></pre>
<blockquote>
<p><strong>예시2</strong></p>
</blockquote>
<pre><code class="language-javascript">  let a = 0;
console.log(Boolean(a));    // false
let b = &quot;0&quot;;
console.log(Boolean(b));    // true; 문자열의 값은 Boolean형으로 1
console.log(a == b);         // true;</code></pre>
<p>  이런값이 나타나는 이유는 ==(동등 비교 연산자; equality operator)는 값의 형을 b의 문자열 &quot;0&quot;을 숫자 0으로 변환하여 비교하게 된다. ==은 유형변환 비교를 하기 때문에 비교하는 두 값을 비교한다. </p>
<h4 id="일치-연산자">일치 연산자</h4>
<p>    동등 연산자(equality operator) ==은 0과 false를 구별하지 못한다.</p>
<blockquote>
<p><strong>예시</strong></p>
</blockquote>
<pre><code class="language-javascript">  console.log(0 == false);     // true
console.log(&#39; &#39; == false);    // true</code></pre>
<p>  동등 연산자(==)가 형이 다른 피연산자를 비교할 때 피연산자를 숫자형으로 바꾸기 때문에 발생한다.(빈문자열&#39; &#39;,false는 숫자형으로 변환하면 0 이다.)
그렇다면 0과 false를 구별할 수 있는 방법은 일치 연산자(strict equality operator) ===를 사용하면 형 변환 없이 값을 비교하고 구별할 수 있다.</p>
<blockquote>
<p><strong>예시</strong></p>
</blockquote>
<pre><code class="language-javascript">  alert( 0 === false ); // false, 피연산자의 형이 다르기 때문이다.</code></pre>
<h4 id="null과-undefined-비교">null과 undefined 비교</h4>
<p>  일치 연산자(===)를 사용하여 null과 undefined를 비교
  두 값의 자료형의 값이 다르기 때문에 거짓(false)가 반환된다.</p>
<blockquote>
<p><strong>예시</strong>
  console.log(null === undefined);    // false
 
 </p>
</blockquote>
<h4 id="동등-연산자를-사용하여-null과-undefined를-비교">동등 연산자(==)를 사용하여 null과 undefined를 비교</h4>
<p>  둘을 동등 연산하게 되면 true가 반환된다. 둘다 &#39;없다&#39;라는 값 자체로서 비교하게 되면 결국 같은 것이다.</p>
<blockquote>
<p><strong>예시</strong></p>
</blockquote>
<p>  <code>javascript
  console.log(null == undefined);        // true</code>
  산술 연산자나 기타 비교 연산자 &lt;, &gt;, &lt;=, &gt;=를 사용하여 null과 undefined를 비교하면
  null과 undefined는 숫자형으로 변환한다. null은 0, undefined는 NaN(Not a Number)으로 변환된다.
 
 
 </p>
<h4 id="null-vs-0">null vs 0</h4>
<p>  null과 0을 비교</p>
<blockquote>
<p><strong>예시</strong></p>
</blockquote>
<p>  <code>javascript
  console.log(null &gt; 0);    // false
console.log(null == 0); // false
console.log(null &gt;= 0);    // true</code>
  기타 비교 연산자(&gt;, &lt;, &gt;=, &lt;=)를 사용하게되면 null은 0으로서 비교된다.
 
 
 
 
비교가 불가능한 undefined
  undefined를 다른 값과 비교해서는 안 된다.</p>
<blockquote>
<p><strong>예시</strong></p>
</blockquote>
<p>  <code>javascript
console.log(undefined &gt; 0);        // false
console.log(undefined &lt; 0);        // false
console.log(undefined == 0);    // false</code><br>  - 1, 2번 줄은 undefined가 NaN으로 변환되어 다른 값과 비교 연산할 경우 항상 false를 반환한다. 
  - 3번 줄에서 undefined는 null과 같다. 그리고 그 이외의 값과는 같지 않기 때문에 false를 반환한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[javascript document.crateElement&appendChild]]></title>
            <link>https://velog.io/@bong-suk/javascript-document.crateElementappendChild</link>
            <guid>https://velog.io/@bong-suk/javascript-document.crateElementappendChild</guid>
            <pubDate>Fri, 18 Oct 2024 01:29:43 GMT</pubDate>
            <description><![CDATA[<h3 id="documentcrateelement">document.crateElement()</h3>
<p>메소드는 지정된 이름의 HTML 요소를 만들어 반환한다.
즉, 내가 작성한 HTML에 존재하지 않는 태그를 뒤늦게 만들어서 추가할 수 있게 도와주는 메소드이다.</p>
<pre><code>document.crateElement(&#39;div&#39;)
document.crateElement(&#39;p&#39;)
document.crateElement(&#39;a&#39;)</code></pre><p>crateElement는 만드는 역할만 할뿐이지 웹 브라우저 화면에 추가되는 것은 아니다!</p>
<h3 id="appendchild">appendChild()</h3>
<p>appendChild 메소드는 DOM 내 개별요소에 자식 요소를 추가할 때 사용하는 메소드이다.</p>
<blockquote>
<p>기본적으로
target,appendChild(자식으로 추가할 요소)
예시
const p = document.crateElement(&quot;p&quot;)
document.body.appendChild(p)</p>
</blockquote>
<h3 id="append">append()</h3>
<p>타겟 요소에 자식 요소를 추가한다는 점에서 같으나, 차이점도 존재한다.</p>
<ul>
<li>append(내용만 가지고도 추가 가능)를 이용하면 요소에 노드 객체 또는 문자열을 자식 요소로 추가할 수 있지만, appendChild는 노드 객체(html 요소만 추가 가능)만을 추가할 수 있다.</li>
<li>append child의 경우 추가한 자식 노드를 반환하지만, append는 반환 데이터가 없다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[java script 제어문 기초]]></title>
            <link>https://velog.io/@bong-suk/java-script-%EC%A0%9C%EC%96%B4%EB%AC%B8-%EA%B8%B0%EC%B4%88</link>
            <guid>https://velog.io/@bong-suk/java-script-%EC%A0%9C%EC%96%B4%EB%AC%B8-%EA%B8%B0%EC%B4%88</guid>
            <pubDate>Thu, 17 Oct 2024 02:34:10 GMT</pubDate>
            <description><![CDATA[<h3 id="비교-연산">비교 연산</h3>
<p>자바스크립트는 주어진 두 항을 비교할 수 있는 &#39;비교 연산자&#39;를 제공한다. 
(대소 비교),(등가 비교) → 무언갈 비교하는 작업 또한 &#39;연산&#39;의 일종이다.</p>
<h4 id="비교-연산의-특징">비교 연산의 특징</h4>
<p>비교 연산식은 언제나 boolean 데이터를 반환한다.(true, false)</p>
<table>
<thead>
<tr>
<th>의미</th>
<th align="left">연산자</th>
<th align="center">의미</th>
<th align="right">연산자</th>
</tr>
</thead>
<tbody><tr>
<td><center>크다</center></td>
<td align="left">&gt;</td>
<td align="center">같다</td>
<td align="right">==</td>
</tr>
<tr>
<td><center>작다</center></td>
<td align="left">&lt;</td>
<td align="center">같지 않다</td>
<td align="right">!==</td>
</tr>
<tr>
<td>크거나 같다</td>
<td align="left">&gt;=</td>
<td align="center">완전히 같다</td>
<td align="right">===</td>
</tr>
<tr>
<td>작거나 같다</td>
<td align="left">&lt;=</td>
<td align="center">완전히 같지 않다</td>
<td align="right">!==</td>
</tr>
<tr>
<td><strong>등호(=) 하나는 대입 연산자이므로, 기호 개수를 잘 확인해야 한다.</strong></td>
<td align="left"></td>
<td align="center"></td>
<td align="right"></td>
</tr>
</tbody></table>
<h4 id="완전히-같다">완전히 같다?</h4>
<p>등가 비교를 할 때, 등호의 개수에 따라 비교 규칙에 차이가 있다.
==는 &#39;추상적(abstract)같음 비교&#39;로써, 자료형이 서로 다르더라도 같다고 판단할 수 있는 비교이다.
===&#39;엄격한(strict) 같음 비교&#39;로써, 자료형과 데이터가 모두 일치해야만 같다고 판단한다.</p>
<h4 id="조건문">조건문</h4>
<p>주어진 조건의 참/거짓 여부에 따라 프로그램의 흐름을 결정할 수 있는 구문을 뜻한다.
불리언 데이터를 반환하거나 불리언 데이터로 해석할 수 있는 표현식을 의미한다.</p>
<blockquote>
<p>EX)
게임 캐릭터의 HP가 0입니까? → true일 경우 캐릭터는 죽는다
지하철 요금을 낼 만큼의 돈이 있습니까? → true일 경우 지하철을 탈 수 있다.</p>
</blockquote>
<h4 id="조건문의-시작은-if">조건문의 시작은 if</h4>
<p>if문의 기본 형태는 다음과 같다.</p>
<pre><code>if(조건){
조건이 true일 때 실행할 코드
}</code></pre><p>예시</p>
<pre><code>let age = 16
if(ㅁㅎㄷ &lt; 20){
console.log(&quot;미성년자입니다.)
}</code></pre><p>변수 age의 갑싱 20보다 작다, 라는 조건이 true를 반환한다면?
콘손 창에 &quot;미성년자입니다&quot;라고 출력하자! 아님 말고!</p>
<h4 id="else">else?</h4>
<p>if는 조건의 참 거짓을 나타내는 것이고 else는 조건이 거짓일 때 추가 정의를 입력한다.</p>
<pre><code>if(조건) {
조건이 true일 때 실행할 코드
} else {
조건이 false일 때 실행할 코드
}</code></pre><p>→else를 추가한 if문을 if-else문이라고 부르기도 한다.
else문은 제한 없이 추가할 수 있다.</p>
<h4 id="반복문">반복문</h4>
<p>비슷하거나 동일한 구문을 반복해서 수행할 수 있는 구문이고 대표적으로 for문과 while문이 있다.</p>
<h3 id="for문">for문</h3>
<p>구문 작성시 반복을 위해 필요한 세 가지 요소를 한 곳에 모아 작성함으로써 직관적으로 반복 횟수를 표현할 수 있는 구문이다.</p>
<pre><code>for(초기식; 조건식; 반복식){
조건이 true인 경우 반복 수행할 코드
}</code></pre><p>→초기식: 반복 조건의 초기화 작업
→반복식: 반복이 한 번 끝날 때마다 실행될 작업</p>
<h3 id="while문">while문</h3>
<p>&#39;주어진 조건이 참일 동안에 구문을 반복하는&#39; 반복문이다.</p>
<pre><code>while(조건){
조건이 true인 동안에 반복 수행할 코드
}</code></pre><p>→조건이란 불리언을 반환하거나 불리언으로 해석될 수 있는 표현식!
→반복 구문은 &#39;루프&#39;라고도 한다.</p>
<p>예시)</p>
<pre><code>while(prompt(&quot;set number&quot;) != 0{
document.write(&quot;get number!&lt;br&gt;&quot;)
}</code></pre><p>prompt()메소드를 이용하여 사용자로부터 정보를 입력 받고 주어진 정보가 0이 아닐 때는 document.write() 명령을 수행하고, 0일 때는 작업을 종료한다는 말이다.</p>
]]></description>
        </item>
    </channel>
</rss>