<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>:).log</title>
        <link>https://velog.io/</link>
        <description>coding &amp; others</description>
        <lastBuildDate>Wed, 21 Jun 2023 06:04:32 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>:).log</title>
            <url>https://velog.velcdn.com/images/marvey-qween/profile/17dabd1f-1590-4fa7-af8d-6ffe39fec0d8/image.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. :).log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/marvey-qween" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[JS - deleting targeted item from Array]]></title>
            <link>https://velog.io/@marvey-qween/JS-deleting-targeted-item-from-Array</link>
            <guid>https://velog.io/@marvey-qween/JS-deleting-targeted-item-from-Array</guid>
            <pubDate>Wed, 21 Jun 2023 06:04:32 GMT</pubDate>
            <description><![CDATA[<h3 id="arrayfilter"><code>Array.filter()</code></h3>
<p>: 이 메서드는 주어진 함수 테스트를 통과하는 (배열의) 모든 요소를 모아 <strong><em>새로운 배열을 생성</em></strong> 하여 반환함.</p>
<p>⚠️ 새로운 배열을 생성하기 때문에 이전의 배열을 변형하는 것이 아니다(필터 이전 배열과 새로운 배열이 <strong><em>동시에 존재</em></strong> 함).</p>
<pre><code class="language-javascript">//syntax
Array.filter(필터용 함수);

//example
const list = [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;];

function eraseB (alphabet) {
  return !== &quot;b&quot;;
}

list.filter(eraseB);
// (3) [&quot;a&quot;, &quot;c&quot;, &quot;d&quot;]

console.log(list);
// (4) [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;]</code></pre>
<p><img src="https://velog.velcdn.com/images/marvey-qween/post/eb99226a-5d7e-4bef-bfe2-e15bcf782750/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - todo list]]></title>
            <link>https://velog.io/@marvey-qween/JS-todo-list</link>
            <guid>https://velog.io/@marvey-qween/JS-todo-list</guid>
            <pubDate>Wed, 21 Jun 2023 02:12:46 GMT</pubDate>
            <description><![CDATA[<h2 id="1-adding-new-html-elements-from-js">1. adding new HTML elements from JS</h2>
<h3 id="⭐️-createelement">⭐️ <code>createElement()</code></h3>
<p>: 지정한 <code>tagName</code>의 HTML 요소를 만들어 반환함.</p>
<pre><code class="language-javascript">document.createElement(tagName);</code></pre>
<h3 id="appendchild"><code>appendChild()</code></h3>
<p>: 괄호 안의 노드를 특정 부모 노드의 자식 노드 리스트 중 마지막 자식으로 붙임.</p>
<pre><code class="language-javascript">//syntax
parentElement.appendChild(childElement);

//example
const firstBox = document.querySelector(&quot;div:first-child&quot;);
const button = document.createElement(&quot;button&quot;);

firstBox.appendChild(button);</code></pre>
<hr>
<h2 id="2-adding--saving-saving-data-in-localstorage">2. adding + saving saving data in localStorage</h2>
<h3 id="jsonstringify"><code>JSON.stringify()</code></h3>
<p>: JavaScript 값이나 객체를 JSON 문자열로 변환하여 반환.
 <code>localStorage</code> 에는 문자열 이외의 값을 저장할 수 없기 때문에 다른 타입의 값은 <code>JSON.stringify()</code> 함수를 사용하여 문자열 타입으로 변환 후 저장한다.</p>
<pre><code class="language-javascript">const array = [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;];

localStorage.setItem(&quot;string&quot;, JSON.stringify(array));</code></pre>
<h3 id="jsonparse"><code>JSON.parse()</code></h3>
<p>: JSON의 문자열의 구문 분석 후 JavaScript 값이나 객체를 생성함.</p>
<pre><code class="language-javascript">const getValue = localStorage.getItem(&quot;string&quot;);
parsedData = JSON.parse(getValue);

console.log(parsedData); // [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;]</code></pre>
<hr>
<h2 id="">+</h2>
<h3 id="foreach"><code>forEach()</code></h3>
<p>: 주어진 함수를 배열 안의 각각의 아이템들에 대해 실행함.</p>
<pre><code class="language-javascript">array.forEach((alphabet) =&gt; {
        console.log(&quot;This is &quot; + alphabet);
});

// This is a
// This is b
// This is c
// This is d</code></pre>
<hr>
<p><strong>참고</strong></p>
<ul>
<li><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach">https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - randomness]]></title>
            <link>https://velog.io/@marvey-qween/JS-Randomness</link>
            <guid>https://velog.io/@marvey-qween/JS-Randomness</guid>
            <pubDate>Tue, 20 Jun 2023 22:23:15 GMT</pubDate>
            <description><![CDATA[<h2 id="randomness">randomness</h2>
<p>...and some more.</p>
<h3 id="✦-math-module">✦ <code>Math</code> module</h3>
<p>: 수학적인 상수와 함수를 위한 속성과 메서드를 가진 (JS) 내장 객체.</p>
<h4 id="⭐️-mathrandom">⭐️ <code>Math.random()</code></h4>
<p>: 0 ~ 1 사이의 구간에서 부동소숫점(float) 난수(random number)를 반환함.</p>
<pre><code class="language-javascript">console.log(Math.random());
// 0.825667262142701</code></pre>
<h4 id="mathfloor"><code>Math.floor()</code></h4>
<p>: <em>&quot;always rounds down and returns the largest integer less than or equal to a given number.&quot;</em></p>
<pre><code class="language-javascript">console.log(Math.floor(5.1)); // 5
console.log(Math.floor(5.9)); // 5</code></pre>
<h4 id="mathceil"><code>Math.ceil()</code></h4>
<p>: <em>&quot;always rounds up and returns the smaller integer greater than or equal to a given number.&quot;</em></p>
<h4 id="mathround"><code>Math.round()</code></h4>
<p>: 입력값을 반올림한 수와 가장 가까운 정수 값을 반환함.</p>
<pre><code class="language-javascript">console.log(Math.round(3.1)); // 3
console.log(Math.round(3.7)); // 4</code></pre>
<h4 id="mathtrunc"><code>Math.trunc()</code></h4>
<p>: 주어진 값의 소수부분을 제거하고 숫자의 정수부분을 반환함.</p>
<pre><code class="language-javascript">console.log(Math.trunc(4.98072)); // 4
console.log(Math.trunc(-8.0001)); // 8</code></pre>
<hr>
<ul>
<li><strong>Example</strong></li>
</ul>
<pre><code class="language-javascript">const quotes = [
  {quote = &quot;Ain&#39;t no thing like me, except me!&quot;, 
   author = &quot;Rocket&quot;,},
];

const quote = document.querySelector(&quot;#quotes span:first-child&quot;);
const author = document.querySelector(&quot;#quotes span:last-child&quot;);

const randomQuote = quotes[Math.floor(Math.random() * quotes.length)];

quote.innerText = randomQuote.quote;
author.innerText = randomQuote.author;</code></pre>
<hr>
<p><strong>참고</strong></p>
<ul>
<li><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math">https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - building a clock]]></title>
            <link>https://velog.io/@marvey-qween/JS-building-a-clock</link>
            <guid>https://velog.io/@marvey-qween/JS-building-a-clock</guid>
            <pubDate>Tue, 20 Jun 2023 12:10:35 GMT</pubDate>
            <description><![CDATA[<h2 id="building-a-clock">building a clock</h2>
<h3 id="✦-setinterval-settimeout">✦ <code>setInterval(), setTimeout()</code></h3>
<p>: <code>setInterval()</code> 의 경우 웹페이지의 특정 부분을 주기적으로 업데이트 해줘야하거나 변경된 데이터를 주기적으로 받아와야 하는 경우 사용한다(ex. 시계).</p>
<p><code>setTimeout()</code> 은 실행하고자 하는 함수를 일정시간 이후에 실행시켜준다.</p>
<ul>
<li><strong>Syntax</strong></li>
</ul>
<pre><code class="language-javascript">setInterval(실행하려는 함수, 반복주기(millisec));</code></pre>
<pre><code class="language-javascript">setTimeout(실행하려는 함수, 일정시간(millisec));</code></pre>
<hr>
<h3 id="✦-date-객체">✦ <code>Date</code> 객체</h3>
<p>: Date 객체를 활용하면 생성 및 수정 시간을 저장하거나 시간을 측정할 수 있고, 현재 날짜를 출력하는 용도로도 활용할 수 있다. <code>new Date()</code> 을 호출하면 새로운 <code>Date</code> 객체가 만들어진다.</p>
<p><code>getHours()</code>
<code>getMinutes()</code>
<code>getSeconds()</code>
<code>getFullYear()</code>
<code>getMonth()</code>  </p>
<p>...</p>
<p>등등의 메서드를 사용해 날짜/시간에 관한 정보를 얻을 수 있다.</p>
<pre><code class="language-javascript">// 인수없이 호출하면 현재 날짜와 시간이 저장된 객체가 반환됨.
const date = new Date();
console.log(date); // -&gt; Tue Jun 20 2023 20:38:25 GMT+0900 (Korean Standard Time)</code></pre>
<hr>
<h3 id="✦-padstart">✦ <code>padStart()</code></h3>
<p>: <code>padStart</code> 메서드는 현재 문자열의 시작을 다른 문자열로 채워 주어진 길이를 만족하는 새로운 문자열을 반환한다.</p>
<ul>
<li><strong>Syntax</strong></li>
</ul>
<pre><code class="language-javascript">String.padStart(targetLength, padString);</code></pre>
<hr>
<ul>
<li><strong>Example</strong></li>
</ul>
<pre><code class="language-javascript">const clock = document.querySelector(&quot;h2#clock&quot;);

function getClock() {
  const date = new Date();
  const hour = String(date.getHours()).padStart(2, 0); //padStart() 메서드는 문자열을 변형하므로 Date 객체에서 가져오는 값을 문자열(String)로 바꿔주어야 한다. =&gt; String()
  const minute = String(date.getMinutes()).padStart(2, 0);
  const second = String(date.getSeconds()).padStart(2, 0);

  clock.innerText = `${hour}:${minute}:${second}`
}

getClock();
setInterval(getClock, 1000);</code></pre>
<hr>
<p><strong>참고</strong></p>
<ul>
<li><a href="https://ko.javascript.info/date">https://ko.javascript.info/date</a></li>
<li><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/padStart">https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/padStart</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - storing data]]></title>
            <link>https://velog.io/@marvey-qween/JS-localStorage</link>
            <guid>https://velog.io/@marvey-qween/JS-localStorage</guid>
            <pubDate>Thu, 20 Oct 2022 06:59:38 GMT</pubDate>
            <description><![CDATA[<h2 id="storing-data">storing data</h2>
<h3 id="✦-local-storage">✦ local storage</h3>
<p>: localStorage를 사용하면, 브라우저에 key-value 값을 Storage에 저장할 수 있다. 저장한 데이터는 세션 간에 공유된다(= 새로 고침해도 저장한 데이터는 유지됨). 브라우저를 다시 실행해도 데이터가 사라지지 않고 남아있다.</p>
<p>✧ <code>localStorage.setItem(keyName, value)</code> : key와 vaule 쌍 추가. 
✧ <code>localStorage.getItem(keyName)</code> : key에 해당하는 value 받아오기.
✧ <code>localStorage.removeItem(keyName)</code> : key와 해당 value를 삭제.
✧ <code>localStorage.clear()</code> : 모든 것을 삭제.
✧ <code>localStorage.key(index)</code> : 인덱스에 해당하는 key를 받아옴.
✧ <code>localStorage.length</code> : 저장된 항목의 개수를 얻음.</p>
<pre><code class="language-javascript">//ex1)
localStorage.setItem(&quot;username&quot;, &quot;sonya&quot;);
const savedUsername = localStorage.getItem(&quot;username&quot;);

console.log(savedUsername); //sonya
</code></pre>
<pre><code class="language-javascript">//ex2)
const loginForm = document.querySelector(&quot;#login-form&quot;);
const loginInput = document.querySelector(&quot;#login-form input&quot;);
const greeting = document.querySelector(&quot;#greeting&quot;);

function onLoginSubmit(event) { //유저 정보가 submit 됐을 경우에
  event.preventDefault(); //잠시 멈추고
  loginForm.classList.add(&quot;hidden&quot;); //form을 숨긴 다음
  const username = loginInput.value; //input에 입력된 value를 변수 username에 저장한다.
  localStorage.setItem(&quot;username&quot;, username); //그 다음 localStorage에 value인 username을 &quot;username&quot;이라는 key 아래에 저장한다.
  paintGreetings(username); //유저 정보 저장이 완료되면 greeting을 화면에 보여준다.
}

function paintGreetings (username) { //username을 인자로 받는다.
  greeting.innerText = `Hello ${username}!` //먼저 greeting의 텍스트를 Hello {username}으로 바꿔준 후
  greeting.classList.remove(&quot;hidden&quot;); //hidden 클래스를 없애준다(결과적으로 greeting이 보여짐).
}

const savedUsername = localStorage.getItem(&quot;username&quot;); //localStorage에서 username 값 가져와 변수 savedUsername에 저장하기.

if (savedUsername === dull) { //만약 savedUsername에 아무런 유저 정보가 저장되어 있지 않을 경우,
  //show the form, form을 화면상에 보이게 한다.
  loginForm.classList.remove(&quot;hidden&quot;); //hidden 클래스를 없애 form을 보이게 한다.
  loginForm.addEventListener(&quot;submit&quot;, onLoginSubmit); //이후 input에 값이 submit되면 함수 onLoginSubmit을 실행한다.
    } else { //하지만 저장된 유저 정보가 존재하는 경우에는
  //show the greetings, greeting을 보여준다.
  paintGreetings(savedUsername) //savedUsername을 인자로 전달하여 paintGreetings 함수를 실행한다. 
    }</code></pre>
<h5 id="20230620">(+2023/06/20)</h5>
<h5 id="localstorage에는-string-타입의-값만-저장할-수-있다">localStorage에는 string 타입의 값만 저장할 수 있다.</h5>
<h5 id="value에-string이-아닌-값을-저장하려면-jsonstringify을-사용한다">value에 string이 아닌 값을 저장하려면, <code>JSON.stringify()</code>을 사용한다.</h5>
<hr>
<p> ✧ 자바스크립트 템플릿 리터럴
 : ES6부터 새로 도입된 문자열 표기법으로, 내장된 표현식을 허용하는 문자열 리터럴이다. 문자열 생성 시 따옴표 대신 백틱을 사용한다. 여러 줄로 이루어진 문자열과 문자 보간기능을 사용할 수 있다. </p>
<ul>
<li><strong>문법</strong><pre><code>`string text`
</code></pre></li>
</ul>
<p><code>string text line 1
string text line 2</code></p>
<p><code>string text ${expression} string text</code></p>
<p>tag <code>string text ${expression} string text</code></p>
<pre><code>* *표현식 삽입법* (expression interpolation)
: template literals를 이용하면 이를 더욱 읽기 쉽도록 활용할 수 있음.
```javascript
//일반 문자열
function onLoginSubmit() {
  event.preventDefault();
  const username = loginInput.value;
  console.log(&quot;hello &quot; + username + &quot;!&quot;); //hello username!
}</code></pre><p>▼▼▼</p>
<pre><code class="language-javascript">//템플릿 리터럴
function onLoginSubmit(event) {
  event.preventDefault();
  const username = loginInput.value;
  console.log(`hello ${username}!`); //hello username!
}</code></pre>
<ul>
<li>줄바꿈
: 템플릿 리터럴을 이용하면 쉽게 줄바꿈이 가능하다.<pre><code class="language-javascript">function onLoginSubmit(event) {
event.preventDefault();
const username = loginInput.value;
console.log(`hello ${username}!
how was your day?`);
}
//hello username
//how was your day?</code></pre>
</li>
</ul>
<hr>
<p><strong>참고</strong></p>
<ul>
<li><a href="https://curryyou.tistory.com/185">https://curryyou.tistory.com/185</a></li>
<li><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Template_literals">https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Template_literals</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - all for the great 'toggle']]></title>
            <link>https://velog.io/@marvey-qween/JS-all-for-the-great-toggle</link>
            <guid>https://velog.io/@marvey-qween/JS-all-for-the-great-toggle</guid>
            <pubDate>Tue, 11 Oct 2022 08:40:06 GMT</pubDate>
            <description><![CDATA[<h2 id="all-for-the-great-toggle">all for the great &#39;toggle&#39;</h2>
<h3 id="✦-classname-classlist">✦ className, classList</h3>
<p>: <code>className</code> 은 특정 엘리먼트의 클래스 속성의 값을 가져오거나 설정할 수 있다. </p>
<p><code>classList</code> 는 공백으로 구분된 문자열인 <code>Element.className</code> 을 통해 엘리먼트의 클래스 목록에 접근하는 방식을 대체하는 간편한 방법이다. </p>
<pre><code class="language-javascript">//className 이용
const h1 = querySelector(&quot;div.hello:first-child h1&quot;);

function handleTitleClick() {
  if(h1.className === &quot;active&quot;) {
     h1.className = &quot;&quot;;
     } else {
       h1.className = &quot;active&quot;;
     }
}

h1.addEventListener(&quot;click&quot;, handleTitleClick);</code></pre>
<pre><code class="language-javascript">//classList 이용
const h1 = querySelector(&quot;div.hello:first-child h1&quot;);

function handleTitleClick() {
  const clickedClass = &quot;clicked&quot;;
  if(h1.classList.contains(&quot;clickedClass&quot;)) {
     h1.classList.remove(clickedClass);
     } else {
       h1.classList.add(clickedClass);
     }
}

h1.addEventListener(&quot;click&quot;, handleTitleClick);</code></pre>
<hr>
<h4 id="classlist-메서드">classList 메서드</h4>
<ol>
<li><p><code>add(String)</code> : 지정한 클래스 값을 추가한다. 만약 추가하려는 클래스가 엘리먼트의 <code>class</code> 속성에 이미 존재한다면 무시한다.</p>
</li>
<li><p><code>remove(String)</code> : 지정한 클래스 값을 제거한다.</p>
</li>
<li><p><code>contains(String)</code> : 지정한 클래스 값이 엘리먼트의 <code>class</code> 속성에 존재하는지 확인한다.</p>
</li>
</ol>
<pre><code class="language-javascript">const h1 = querySelector(&quot;div.hello:first-child h1&quot;);

function handleTitleClick() {
 const clickedClass = &quot;clicked&quot;;
  if(h1.classList.contains(clickedClass)) {
     h1.classList.remove(clickedClass);
     } else {
      h1.classList.add(clickedClass); 
     }
}

h1.addEventListener(&quot;click&quot;, handleTitleClick);</code></pre>
<p><strong>4.</strong> ⭐️ <strong><code>toggle(String)</code>, <code>toggle(String, force)</code></strong> : </p>
<p>✧<code>String</code> : 토글하고 싶은 Class의 String형.
✧<code>force</code> : 껐다, 켰다하는 방식이 아니라, 끄거나 키거나 둘 중 하나만 되는 듯. <code>true</code> 로 설정되어있을 경우 클래스가 <em>추가됨(remove안됨)</em>. 반대로 <code>false</code> 로 설정돼있다면 클래스가 <em>제거됨(add안됨)</em>.</p>
<p><strong>*&quot;If included, turns the toggle into a one way-only operation.&quot;*</strong> <em>- MDN</em></p>
<pre><code class="language-javascript">//1. toggle(String)
const h1 = querySelector(&quot;div.hello:first-child h1&quot;);

function handleTitleClick() {
  //toggle이 울트라 캡짱이야...
 h1.classList.toggle(&quot;clicked&quot;); 
}

h1.addEventListener(&quot;click&quot;, handleTitleClick);</code></pre>
<p><img src="https://velog.velcdn.com/images/marvey-qween/post/b898ed62-700d-4b19-aada-9897ab1003e2/image.gif" alt=""></p>
<pre><code class="language-javascript">//2. toggle(String, force)
const h1 = querySelector(div.hello:first-child h1);

function handleTitleClick() {
  //더 클릭해봐도 변한 그 상태 그대로 유지된다.
 h1.classList.toggle(&quot;clicked&quot;, force); 
}

h1.addEventListener(&quot;click&quot;, handleTitleClick);</code></pre>
<p><img src="https://velog.velcdn.com/images/marvey-qween/post/2cabee99-b0a3-4c15-b58a-b91152268941/image.gif" alt=""></p>
<hr>
<p><strong>참고</strong></p>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/toggle">https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList/toggle</a></li>
<li><a href="https://developer.mozilla.org/ko/docs/Web/API/Element/classList">https://developer.mozilla.org/ko/docs/Web/API/Element/classList</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - event]]></title>
            <link>https://velog.io/@marvey-qween/JS-event</link>
            <guid>https://velog.io/@marvey-qween/JS-event</guid>
            <pubDate>Fri, 07 Oct 2022 06:17:27 GMT</pubDate>
            <description><![CDATA[<h2 id="event">event</h2>
<p>: 프로그래밍하고 있는 시스템에서 일어나는 사건 혹은 발생(MDN), 예를 들어 유저가 특정 버튼을 클릭하거나, 혹은 특정 키를 입력했을 때. 브라우저는 이벤트를 감지할 수 있으며 이벤트 발생 시 알려줄 수도 있다. 이를 통해 웹페이지와 유저 간의 상호 작용이 가능하다. </p>
<p>이벤트의 종류에는 여러가지가 있다. </p>
<p><strong>1. 마우스 이벤트</strong> :</p>
<p><code>click</code> : 마우스 클릭할 때 발생.
<code>mouseover</code> : 커서가 요소 안으로 이동될 때 발생.
<code>mouseenter</code> : 커서가 요소 위로 이동될 때 발생.
<code>mouseleave</code> : 커서가 요소 밖으로 이동될 때 발생. </p>
<p><strong>2. 키보드 이벤트</strong> : </p>
<p><code>keydown</code> : 키가 눌렸을 때 발생.
<code>keyup</code> : 키를 더이상 누르고 있지 않을 때 발생(손가락을 키에서 떼었을 때).</p>
<p>등이 있다. </p>
<hr>
<h3 id="✦-addeventlistenerevent-eventhandler">✦ <code>addEventListener(&quot;event&quot;, eventHandler)</code></h3>
<p>: 이벤트를 등록하는 가장 권장되는 방식. 이 방식을 이용하면 여러 개의 이벤트 핸들러를 등록할 수 있다. <strong><em>이벤트 핸들러</em></strong> 란 특정 요소에서 발생하는 이벤트는 처리하기 위해 작성하는 함수이다. 이벤트 핸들러가 연결된 특정 요소에서 지정된 타입의 이벤트가 발생하면, 웹 브라우저는 연결된 이벤트 핸들러를 실행한다.</p>
<pre><code class="language-javascript">1)

const h1 = document.querySelector(&quot;div.hello:first-child h1&quot;);

//이벤트 핸들러(함수)
function handleMouseClick() {
  h1.style.color = &quot;blue&quot;;
}

h1.addEventListener(&quot;click&quot;, handleMouseClick); //헤더1을 클릭하면 헤더1의 폰트 색이 바뀐다. </code></pre>
<pre><code class="language-javascript">2)

function handleWindowResize() {
 document.body.style.backgroundColor = &quot;turquoise&quot;; 
}

window.addEventListener(&quot;resize&quot;, handleWindowResize); //윈도우의 사이즈가 바뀌면 배경색 또한 turquoise 색으로 바뀐다. </code></pre>
<p>✧ <em>타겟에 따라 이벤트의 종류도 달라진다.</em></p>
<pre><code class="language-javascript">const h1 = document.querySelector(&quot;div.hello:first-child h1&quot;);

function handleTitleClick() {
 const currentColor = h1.style.color;
  let newColor;
  if (currentColor === &quot;blue&quot;) {
    newColor = &quot;tomato&quot;;
  } else {
    newColor = &quot;blue&quot;;
  }
  h1.style.color = newColor;
}

h1.addEventListener(&quot;click&quot;, handleTitleClick)</code></pre>
<hr>
<p><strong>참고</strong></p>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/UI_Events">https://developer.mozilla.org/en-US/docs/Web/API/UI_Events</a></li>
<li><a href="https://opentutorials.org/course/1375/6761">https://opentutorials.org/course/1375/6761</a></li>
<li><a href="https://goddaehee.tistory.com/269">https://goddaehee.tistory.com/269</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - grab the elements from HTML !]]></title>
            <link>https://velog.io/@marvey-qween/JS-grab-the-elements-from-HTML</link>
            <guid>https://velog.io/@marvey-qween/JS-grab-the-elements-from-HTML</guid>
            <pubDate>Thu, 06 Oct 2022 12:51:17 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/marvey-qween/post/c868ca4e-c44b-430e-9656-cf80aa609188/image.png" alt=""></p>
<h2 id="how-to-bring-elements-from-html-to-js">how to bring elements from HTML to JS</h2>
<h3 id="✦-getelementbyidid">✦ <code>getElementById(&quot;id&quot;)</code></h3>
<p>: 요소의 id 속성으로 불러오기. </p>
<pre><code class="language-html">HTML)
...
&lt;body&gt;
  &lt;h1 class = &quot;web&quot; id = &quot;title&quot;&gt;My website&lt;/h1&gt;
&lt;/body&gt;
...</code></pre>
<pre><code class="language-javascript">JS)
const title = document.getElementById(&quot;title&quot;);
console.log(title); //&lt;h1 class = &quot;web&quot;id = &quot;title&quot;&gt;My website&lt;/h1&gt;</code></pre>
<hr>
<h3 id="✦-getelementsbyclassnameclassname">✦ <code>getElementsByClassName(&quot;className&quot;)</code></h3>
<p>: 요소의 class 이름으로 불러오기. 한꺼번에 많은 요소들을 불러와야 할 때 사용한다. 리턴 값은 <strong><em>배열</em></strong>.</p>
<pre><code class="language-javascript">const.web = document.getElementsByClassName(&quot;web&quot;);
console.log(web); //&lt;h1 class = &quot;web&quot;id = &quot;title&quot;&gt;My website&lt;/h1&gt;</code></pre>
<h3 id="✦-getelementsbytagnametagname">✦ <code>getElementsByTagName(&quot;tagName&quot;)</code></h3>
<p>: 요소의 tag 이름으로 불러오기. 한꺼번에 많은 요소들을 불러와야 할 때 사용한다. 리턴 값은 <strong><em>배열</em></strong>. </p>
<pre><code class="language-javascript">const title = document.getElementsByTagName(&quot;h1&quot;);</code></pre>
<p>⚠️ <code>getElementsByClassName</code> / <code>getElementsByTagName</code> 에서 &quot;s&quot;를 빼먹지 말자. 이들은 대응하는 요소를 담은 컬렉션(배열)을 반환하기 때문에 중간에 &quot;s&quot;가 들어간다.</p>
<p>⚠️ 한 개의 요소가 아닌 배열을 반환한다. 따라서 첫번째 줄에 있는 코드는 작동하지 않을 것이다. </p>
<pre><code class="language-javascript">//doesn&#39;t work
document.getElementsByTagName(&quot;h1&quot;).innerText = &quot;jolly !&quot;;
//works !
document.getElementByTagName(&quot;h1&quot;)[0].innerText = &quot;jolly !&quot;;</code></pre>
<p>두번째 코드처럼 인덱스를 사용해 요소를 얻고 그 요소에 값을 할당하게 되면 기존 의도대로 동작한다.</p>
<hr>
<h3 id="✦-queryselectorcss-selector">✦ <code>querySelector(&quot;css selector&quot;)</code></h3>
<p>: 요소의 CSS 선택자로 불러오기. 주어진 CSS 선택자에 대응하는 요소 중 <strong><em>첫번째</em></strong> 요소를 반환한다. </p>
<pre><code class="language-html">HTML)
...
&lt;body&gt;
  &lt;div class = &quot;box&quot;&gt;
    &lt;h1&gt;My website&lt;/h1&gt;
    &lt;h1&gt;My website&lt;/h1&gt;
    &lt;h1&gt;My website&lt;/h1&gt;
    &lt;h1&gt;My website&lt;/h1&gt;
    &lt;h1&gt;My website&lt;/h1&gt;
  &lt;/div&gt;
&lt;/body&gt;
...</code></pre>
<pre><code class="language-javascript">JS)
const title = document.querySelector(&quot;.box h1&quot;);
title.innerText = &quot;His website&quot;;//첫번째 h1이 &quot;My website&quot;에서 &quot;His website&quot;로 바뀐다.</code></pre>
<h3 id="✦-queryselectorallcss-selector">✦ <code>querySelectorAll(&quot;css selector&quot;)</code></h3>
<p>: 자식 요소 중 주어진 CSS 선택자에 대응하는 모든 요소를 반환한다(=컬렉션/배열 반환).</p>
<pre><code class="language-javascript">const all = document.querySelectorAll(&quot;h1&quot;);
all[1].innerText = &quot;I want to change all of it.&quot;;</code></pre>
<hr>
<p>✧ <strong><em>이들은 모두 DOM 요소들을 제어하기 위한 함수(메서드)들이다.</em></strong>
: DOM = Document Object Model. XML/HTML 문서에 접근하기 위한 일종의 인터페이스이다. 이 모델은 문서 내의 모든 요소를 정의하고, 각각의 요소에 접근하는 방법을 제공한다(계층적 구조로 이루어져 있음). <img src="https://velog.velcdn.com/images/marvey-qween/post/d05b766f-d536-444c-af3c-bb658dc7a30a/image.png" alt="[](http://www.tcpschool.com/javascript/js_dom_concept)">
(사진: <a href="http://www.tcpschool.com/javascript/js_dom_concept">http://www.tcpschool.com/javascript/js_dom_concept</a>)</p>
<p>자바스크립트는 DOM 요소들을 제어하여 새로운 HTML 요소나 속성을 추가할 수 있고, 반대로 존재하는 HTML 요소나 속성을 제거할 수도 있다. 또한 HTML 문서의 모든 HTML/CSS를 변경할 수 있으며, 새로운 이벤트를 추가할 수 있다.</p>
<pre><code class="language-javascript">const.title = document.querySelector(&quot;.web h1&quot;);
title.innerText = &quot;Your website&quot;; //&quot;My website&quot;가 &quot;Your website&quot;로 변함.</code></pre>
<hr>
<p><strong>참고</strong></p>
<ul>
<li><a href="https://ko.javascript.info/searching-elements-dom">https://ko.javascript.info/searching-elements-dom</a></li>
<li><a href="http://www.tcpschool.com/javascript/js_dom_concept">http://www.tcpschool.com/javascript/js_dom_concept</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - conditional]]></title>
            <link>https://velog.io/@marvey-qween/JS-conditional</link>
            <guid>https://velog.io/@marvey-qween/JS-conditional</guid>
            <pubDate>Thu, 29 Sep 2022 04:22:35 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/marvey-qween/post/f78f77b1-eef3-46bf-b948-b6cebe8265b5/image.png" alt=""></p>
<h2 id="conditional">conditional</h2>
<p>: 조건문. 
→ <code>if...else</code>문. </p>
<pre><code class="language-javascript">if (condition) {
  //executed if the condition is true. 
    } else {
      //executed if the condition is false.
}</code></pre>
<ol>
<li><code>if</code>뒤에 바로 오는 소괄호()에는 조건이 들어간다. <code>true</code> 혹은 <code>false</code>를 리턴. </li>
<li><code>else</code>안의 코드는 조건이 <code>false</code>를 반환할 때 실행된다. </li>
</ol>
<hr>
<p>→ <code>if... else if...</code></p>
<pre><code class="language-javascript">// are you allowed to drink?
const age = parseInt(prompt(&quot;How old are you?&quot;));

if (isNaN(age)) {
  alert(&quot;Please type in your real age.&quot;);
} else if (age &lt; 18) {
   console.log(&quot;You are too young to drink.&quot;);
} else if (age &gt;= 18 &amp;&amp; age &lt;= 50) {
  console.log(&quot;You can drink.&quot;);
} else if (age &gt; 50 &amp;&amp; age &lt;= 80) {
  console.log(&quot;You shouldn&#39;t drink too much.&quot;);
} else if (age &gt; 80) {
  console.log(&quot;Always be happy.&quot;);
}</code></pre>
<p>++ <strong>MDN 예시</strong>: 아이가 부모님의 쇼핑을 도와주면 10달러를 용돈으로 받게 되고, 도와주지 않는다면 5달러를 받게 되는 조건문.</p>
<pre><code class="language-javascript">let shoppingDone = false;
let childsAllowance; 

if (shoppingDone === true) {
  childsallowance = 10;
} else {
  childsAllowance = 5;
}</code></pre>
<hr>
<p>✦  <strong>연산자</strong> 
: 1. <code>&amp;&amp;</code> = 논리 연산자 AND. 한 쪽이 <code>false</code>면 조건 자체가 <code>false</code>가 된다. </p>
<pre><code class="language-javascript">true &amp;&amp; true === true; //both of the statements should be true for condition to be true. 
true &amp;&amp; false === false;
false &amp;&amp; true === false;
false &amp;&amp; false === false;</code></pre>
<ol start="2">
<li><p><code>||</code> = 논리 연산자 OR. 한 쪽만 <code>true</code>여도 조건은 <code>true</code>가 된다. </p>
<pre><code class="language-javascript">true || true === true;
true || false === true;
false || true === true;
false || false === false; // both of the statements have to be false for condition to be false.</code></pre>
</li>
<li><p><code>!</code> = 논리 연산자 NOT. <code>true</code>연산자를 <code>false</code>로 반환. </p>
<pre><code class="language-javascript">const happy = !true; // false 반환
const sad = !false; // true 반환</code></pre>
</li>
<li><p>비교연산자
  <code>==</code>: 동등. 
  <code>!=</code>: 부등.
  <code>===</code>: 일치.
  <code>!==</code>: 불일치.</p>
</li>
</ol>
<ul>
<li><strong><code>==</code>와 <code>===</code>의 차이</strong>
: <code>===</code>는 비교하는 변수의 값 뿐만 아니라 변수의 <strong>유형까지 고려</strong>한다. 반면 <code>==</code>의 경우, <strong>변수 값을 기반으로 변수의 유형을 수정</strong>한다. <pre><code class="language-javascript">//==비교연산자
1 == &#39;1&#39; //true
1 == true //true
0 == [] //true
null == undefined //true
</code></pre>
</li>
</ul>
<p>//===비교연산자
1 === &#39;1&#39; //false
1 === true // false
&#39;true&#39; === true //false</p>
<p>//cf1
true == &#39;true&#39; //false. true는 1로 변환되고 &#39;true&#39;는 NaN으로 변환되기 때문에 이 statement는 거짓이다. 
//cf2
undefined == &#39;undefined&#39; // false. undefined의 숫자형은 NaN, &#39;undefined&#39;역시 NaN으로 변환. NaN == NaN이 false이기 때문에 반환되는 값은 false.</p>
<pre><code>(❗️마지막 cf는 https://stackoverflow.com/questions/11363659/why-does-true-true-show-false-in-javascript 참조)
***
✦ **```isNaN```**: 데이터 타입이 number가 아닌지 맞는지 구별해주는 function. ```true``` 혹은 ```false```를 반환한다. 
```javascript
const a = 5;
console.log(isNaN(a)); // false 반환.

const b = &quot;hello&quot;;
console.log(isNaN(b)); //true 반환. </code></pre><hr>
<p><strong>참고</strong></p>
<ul>
<li><a href="https://www.javascript.com/learn/conditionals">https://www.javascript.com/learn/conditionals</a></li>
<li><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Expressions_and_Operators#%EC%A1%B0%EA%B1%B4_%EC%82%BC%ED%95%AD_%EC%97%B0%EC%82%B0%EC%9E%90">https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Expressions_and_Operators#%EC%A1%B0%EA%B1%B4_%EC%82%BC%ED%95%AD_%EC%97%B0%EC%82%B0%EC%9E%90</a></li>
<li><a href="https://velog.io/@vvsogi/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%8F%99%EB%93%B1%EC%9D%BC%EC%B9%98-%EC%97%B0%EC%82%B0%EC%9E%90-%EC%99%80-%EC%B0%A8%EC%9D%B4%EC%A0%90">https://velog.io/@vvsogi/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%8F%99%EB%93%B1%EC%9D%BC%EC%B9%98-%EC%97%B0%EC%82%B0%EC%9E%90-%EC%99%80-%EC%B0%A8%EC%9D%B4%EC%A0%90</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - return]]></title>
            <link>https://velog.io/@marvey-qween/JS-return</link>
            <guid>https://velog.io/@marvey-qween/JS-return</guid>
            <pubDate>Thu, 29 Sep 2022 04:20:54 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/marvey-qween/post/17c7d9eb-7738-45bc-a941-d0b52d6ea510/image.png" alt=""></p>
<h2 id="return">return</h2>
<p>: <code>return</code> 명령문은 1. <strong>함수 실행을 종료</strong>하고, 2. <strong>주어진 값을 함수 호출 지점으로 반환</strong>한다. </p>
<pre><code class="language-javascript">function add(a, b) {
  return a + b;
}

const addResult = add(1, 2);

console.log(addResult); // 3</code></pre>
<p>함수 본문에서 return 명령문에 도달하면 <strong>함수의 실행은 그 지점에서 <em>중단된다</em></strong>(<code>return</code>을 호출하는 지점에서 즉시 실행을 멈춤). 값을 제공한 경우 함수를 호출한 곳에 그 값을 반환한다. 이때 값을 명시하지 않으면 <code>undefined</code>를 반환한다.</p>
<pre><code class="language-javascript">const calculator = {
  plusTwo: function (a) {
    return a + 2;
  }, 
  minusTwo: function (a) {
    return a - 2;
  }, 
  timesTwo: function (a) {
    return a * 2;
  }, 
  divideTwo: function (a) {
    return a / 2;
  }, 
  square: function (a) {
    return a * a;
  }
}

const plusResult = calculator.plusTwo(2); // 4
const minusResult = calculator.minusTwo(plusResult); // 2
const timesResult = calculator.timesTwo(minusResult); // 4
const divideResult = calculator.divideTwo(timesResult); // 2
const squareResult = calculator.sqaure(divideResult); //4</code></pre>
<pre><code class="language-javascript">//example: korean age calculator

function calculateKrAge(ageOfForeiner) {
  return ageOfForeigner + 2;
}

const krAge = calculateKrAge(20);
console.log(krAge); // 22</code></pre>
<ul>
<li><code>return</code> 이후 함수는 사라지고 결과를 남긴다.</li>
<li><code>return</code> 이후 적힌 함수는 실행되지 않으므로 꼭 필요한 코드라면 <code>return</code> 이전에 적도록 한다. </li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - array, object, function]]></title>
            <link>https://velog.io/@marvey-qween/JS-array-object-function</link>
            <guid>https://velog.io/@marvey-qween/JS-array-object-function</guid>
            <pubDate>Tue, 27 Sep 2022 15:09:50 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/marvey-qween/post/05efe484-19ff-419a-8bcc-3c2c9dac6780/image.png" alt=""></p>
<h2 id="✦-array">✦ array</h2>
<p>: 1개의 변수에 여러 개의 값을 순차적으로 저장할 때 사용한다. 배열 안에는 모든 타입의 데이터가 들어갈 수 있다. </p>
<pre><code class="language-javascript">const me = &quot;fat&quot;;
const anything = [1, 2, 3, false, true, undefined, &quot;text&quot;, me]; //all data types allowed.</code></pre>
<ul>
<li><code>.push()</code> 를 사용해 배열에 값을 추가할 수도 있다.<pre><code class="language-javascript">const shopping = [&quot;milk&quot;, &quot;pork&quot;, &quot;pizza&quot;, &quot;potato&quot;, &quot;watermelon&quot;];
console.log(shopping);
shopping.push(&quot;eggs&quot;); // add value: &quot;eggs&quot;
console.log(shopping); // [&quot;milk&quot;, &quot;pork&quot;, &quot;pizza&quot;, &quot;potato&quot;, &quot;watermelon&quot;, &quot;eggs&quot;]</code></pre>
</li>
<li>리스트를 수정할 수 있다.<pre><code class="language-javascript">shopping[2] = &quot;water&quot;; //리스트의 (visually)세번째 값을 수정해준다.
console.log(shopping); // [&quot;milk&quot;, &quot;pork&quot;, &quot;water&quot;, &quot;potato&quot;, &quot;watermelon&quot;, &quot;eggs&quot;]</code></pre>
</li>
</ul>
<h2 id="✦-object">✦ object</h2>
<p>: <strong>현실의 사물을 프로그래밍에 반영한 것!</strong> 
객체는 속성의 컬렉션이다. 속성의 값이 함수인 경우에는 <strong><em>메서드(method)</em></strong>라고 부른다.</p>
<pre><code class="language-javascript">const sonya = {
  age: 20, // property 속성. 키(속성명): 값(속성값)
  nationality: &quot;korean&quot;,
  sex: &quot;female&quot;,
  married: false,
  sayHello: function(name) {
    console.log(&quot;Hello &quot; + name + &quot;, nice to meet you!&quot;);
  }; // method 메서드.
} 

console.log(sonya); // {age: 20, nationality: &quot;korean&quot;, sex: &quot;female&quot;, married: false, sayHello: f}
sonya.height = 154;
console.log(sonya); // {age: 20, nationality: &quot;korean&quot;, sex: &quot;female&quot;, married: false, height: 154, sayHello: f}

sonya.sayHello(&quot;Sonya&quot;); // Hello Sonya, nice to meet you!</code></pre>
<h2 id="✦-function">✦ function</h2>
<p>: 하나의 특별한 목적의 작업을 수행하도록 설계된 독립적인 블록을 의미한다. 이러한 함수는 필요할 때마다 호출하여 해당 작업을 반복해서 수행할 수 있다. </p>
<pre><code class="language-javascript">function sayHello(name) {
  console.log(&quot;Hello &quot; + name + &quot;, nice to meet you!&quot;);
}

sayHello(&quot;sonya&quot;); // Hello sonya, nice to meet you!</code></pre>
<ul>
<li><strong>argument(인수)</strong>: 함수를 호출할 때 값을 전달함(=전달인자). 호출할 때마다 수시로 바뀌는 값이기 때문에 변수가 아닌 값으로 정의한다. </li>
<li><strong>매개변수(parameter)</strong>: 함수 내부에 있는 인자, 함수가 호출되며 전달한 인수의 값이 변수에 담기게 된다. <pre><code class="language-javascript">function add(a, b) { // 매개변수
console.log(a + b);
}
</code></pre>
</li>
</ul>
<p>add(3 + 5); // 인수</p>
<pre><code>***
** *object, function을 이용하여 계산기 만들기*
```javascript
const calculator = {
  add: function (a, b) {
    console.log(a + b);
  }, 
  subtract: function (a, b) {
    console.log(a - b);
  },
  times: function (a, b) {
    console.log(a * b);
  },
  divide: function (a, b) {
    console.log(a / b);
  },
  powerOf: function (a, b) {
    console.log(a ** b);
  }
}

calculator.add(1, 2); // 3
calculator.subtract(5, 7); // -2
calculator.times(10, 7); // 70
calculator.divide(30, 2); // 15
calculator.powerOf(2, 6); // 64</code></pre><hr>
<p><strong>참고</strong></p>
<ul>
<li><a href="https://www.zerocho.com/category/JavaScript/post/572c6f759a5f1c4db2481ee3">https://www.zerocho.com/category/JavaScript/post/572c6f759a5f1c4db2481ee3</a></li>
<li><a href="https://velog.io/@colki/JS-parameter-%EC%99%80-argument-%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EC%9D%B8%EC%88%98-%EC%9D%B8%EC%9E%90">https://velog.io/@colki/JS-parameter-%EC%99%80-argument-%EC%9D%98-%EC%B0%A8%EC%9D%B4-%EC%9D%B8%EC%88%98-%EC%9D%B8%EC%9E%90</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - variables]]></title>
            <link>https://velog.io/@marvey-qween/JS-variables</link>
            <guid>https://velog.io/@marvey-qween/JS-variables</guid>
            <pubDate>Mon, 26 Sep 2022 16:10:48 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/marvey-qween/post/5c111f11-3b45-4bc7-838c-a128411b7d06/image.png" alt=""></p>
<h2 id="✦-const-let">✦ const, let</h2>
<ul>
<li>const: 변수 재선언 불가능, 변수 재할당 불가능.</li>
<li>let: 변수 재선언 불가능, 변수 재할당 가능.<pre><code class="language-javascript">const myName = &quot;sonya&quot;;
console.log(myName); // sonya
</code></pre>
</li>
</ul>
<p>myName = &quot;jane&quot;;
console.log(myName); // Uncaught TypeError: Assignment to constant variable.
//const로 변수를 선언할 경우 변수 재할당이 불가능하다.</p>
<pre><code>```javascript
let myName = &quot;sonya&quot;;
console.log(myName); // sonya

myName = &quot;jane&quot;;
console.log(myName); // jane
//let으로 변수를 선언할 경우 변수 재할당이 가능하다.</code></pre><h2 id="-var">* <del>var</del></h2>
<ul>
<li><code>var</code>는 ES6 이전에 사용되던 키워드. 변수 재선언이 되어도 에러가 일어나지 않아 오류를 일으킬 수 있다(이제는 사용하지 말 것).<pre><code class="language-javascript">var this = &quot;duckling&quot;;
console.log(this); // duckling
</code></pre>
</li>
</ul>
<p>var this = &quot;piglet&quot;;
colsole.log(this); // piglet</p>
<pre><code>
- [JavaScript에서 ```var``` 를 사용하면 안되는 이유 ](https://hoondev.tistory.com/101)
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[JS - basic data types]]></title>
            <link>https://velog.io/@marvey-qween/JS-basic-data-types</link>
            <guid>https://velog.io/@marvey-qween/JS-basic-data-types</guid>
            <pubDate>Mon, 26 Sep 2022 14:58:26 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/marvey-qween/post/4fe7f444-307c-4466-b1f7-c3a879bd3483/image.png" alt="">
<img src="blob:https://velog.io/f3bc7072-d2ed-48ce-a977-552b323fb7d5" alt="업로드중.."></p>
<h2 id="basic-datatypes">basic datatypes</h2>
<h3 id="✦-number">✦ number</h3>
<ul>
<li>integer (정수)  - 1, 4, 11</li>
<li>float (부동소수점) - 0.1, 4976.23<pre><code class="language-javascript">const a = 5;
console.log(a + 3);
</code></pre>
</li>
</ul>
<blockquote>
<blockquote>
<p>8</p>
</blockquote>
</blockquote>
<pre><code>
### ✦ string
- text - &quot;hello&quot;, &quot;nowhere&quot;
```javascript
let myName = &quot;sonya&quot;;
console.log(&quot;my name is &quot; + myName);

&gt;&gt; my name is sonya</code></pre><h3 id="✦-boolean">✦ boolean</h3>
<ul>
<li>true / false</li>
</ul>
<h3 id="✦-null">✦ null</h3>
<ul>
<li>nothing, 아무것도 없는 상태<pre><code class="language-javascript">const nothing = null;
console.log(nothing);
</code></pre>
</li>
</ul>
<blockquote>
<blockquote>
<p>null</p>
</blockquote>
</blockquote>
<pre><code>
### ✦ undefined
- 변수가 존재하지만 값이 주어지지 않았을 때. 
```javascript
let something;
console.log(something);

&gt;&gt; undefined</code></pre>]]></description>
        </item>
    </channel>
</rss>