๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

javascript/๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ

DAY 5

 

 

#2.13 Conditionals 

 

prompt();

์‚ฌ์šฉ์ž์—๊ฒŒ ์ฐฝ์„ ๋„์›Œ ๊ฐ’์„ ๋ฐ›์•„์˜ค์ง€๋งŒ, ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ๋•Œ ๊นŒ์ง€ ์ฝ”๋“œ์˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๋Š” ์˜ค๋ž˜๋œ ๋ฐฉ์‹์œผ๋กœ css๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์—†๋‹ค.

typeof ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋Š” variable์˜ type์„ ๋ณผ์ˆ˜ ์žˆ๋Š” ํ‚ค์›Œ๋“œ์ธ๋ฐ, prompt()์—์„œ๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ์ด๋ฅผ typeof๋กœ ์ถœ๋ ฅํ•ด๋„ string์ด๋ผ๊ณ  ์ž…๋ ฅ๋œ๋‹ค. prompt์˜ type์€ string์ด default์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

parseInt();

์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ string type์„ number type์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค€๋‹ค.

console.log(typeof "15", typeof parseInt("15")); 
// string number

const age = parseInt(prompt("Please write your age"));
console.log(typeof age);
// ์ด ๋•Œ prompt์— ๋ช…๋ฐฑํ•œ string๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด ์ฝ˜์†”์—๋Š” age์˜ type์ด NaN์ด๋ผ๊ณ  ํ•  ๊ฒƒ์ด๋‹ค.
// ๊ทธ๋Ÿฌ๋‚˜ typeof age๋Š” number๋กœ ์ถœ๋ ฅ๋œ๋‹ค. NaN์ด number๋กœ ์ทจ๊ธ‰๋˜๋Š” ๋“ฏํ•˜๋‹ค..
// console.log(isNan(age));๋Š” true๊ฐ€ ๋  ๊ฒƒ. 

// ๋งŒ์•ฝ prompt ์•ˆ์— 123dfad ๊ฐ™์ด ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅํ•˜๊ณ 
// console.log(age);๋ฅผ ํ•˜๋ฉด 123์ด ์ถœ๋ ฅ๋œ๋‹ค.
// ์ด๋Š” parseInt๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ธ€์ž๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด
// ๊ทธ ๊ธ€์•„ ์ดํ›„๋Š” ๋ฌด์‹œํ•˜๊ณ  ํ•ด๋‹น ์ง€์ ๊นŒ์ง€์˜ ์ •์ˆ˜๊ฐ”์„ ๋ฆฌํ„ดํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

#2.14 Conditionals part Two

 

const age = parseInt(prompt("How old are you?"));

if (isNaN(age)) {
  console.log("Please write a number.");
} else if (age < 18) {
  console.log("You are too young.");
} else {
  console.log("You can drink.");
}

 

์—ฐ์‚ฐ์ž ๋‚ด์šฉ
&& ์กฐ๊ฑด๋ฌธ ๋‘˜ ๋‹ค true (AND)
||  ์กฐ๊ฑด๋ฌธ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ true (OR)
== ๋™๋“ฑ ์—ฐ์‚ฐ์ž (๊ฐ’๋งŒ ๊ฐ™์œผ๋ฉด true)
=== ์ผ์น˜ ์—ฐ์‚ฐ์ž (๊ฐ’๊ณผ ๊ฐ’์˜ ์ข…๋ฅ˜(data type)๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€์ง€ ๋น„๊ตํ•˜์—ฌ ๊ฐ™์œผ๋ฉด true)

 

== vs ===

- ๋ฐฐ์—ดํ˜• : ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์ด ๊ฐ™๋”๋ผ๋„ ๋ฐฐ์—ด์„ ํ• ๋‹นํ•  ๋•Œ ๊ฐ ๋ณ€์ˆ˜๋Š” ๊ฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ฃผ์†Œ๊ฐ€ ๋‹ค๋ฅด๋ฏ€๋กœ ๋‘ ๋ฐฐ์—ด์€ ๊ฐ™์ง€ ์•Š๋‹ค.

 

let a = [1, 2, 3];
let b = [1. 2. 3];
console.log(a==b); // false
console.log(a===b); // false

let x = {}
let y = {}
console.log(x==y); // false
console.log(x===y); // false

 

๋™๋“ฑ ์—ฐ์‚ฐ์ž(==)๋ณด๋‹ค๋Š” ์ผ์น˜ ์—ฐ์‚ฐ์ž(===)๋ฅผ ํ›จ์”ฌ ๊ถŒ์žฅํ•œ๋‹ค.

 

 

 

#3.6 CSS in Javascript

 

current color = h1์˜ ํ˜„์žฌ color

newColor : ๋ณ€๊ฒฝ๋  ์ƒ‰์ƒ ๊ฐ’์„ ๋‹ด๋Š” let ๋ณ€์ˆ˜ 

// #1. event๋ฅผ ์ ์šฉ์‹œํ‚ฌ element๋ฅผ ์ฐพ์•„๋ผ
const h1 = document.querySelector(".hello:first-child h1");

// #3. ๊ทธ event์— ๋ฐ˜์‘ํ•ด๋ผ 
function handleTitleClick() {
  const currentColor = h1.style.color;
  let newColor; // ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๋นˆ let ๋ณ€์ˆ˜
  if (currentColor === "blue") {
    newColor = "tomato";
  } else {
    newColor = "blue";
  }
  h1.style.color = newColor;
}

// #2. event๋ฅผ listenํ•ด๋ผ
h1.addEventListener("click", handleTitleClick);

 

 

#3.7 CSS in Javascript part Two

 

 

์œ„์˜ ์ฝ”๋“œ๋Š” ์ž˜ ์ž‘๋™ํ•˜๋Š” ์ฝ”๋“œ์ง€๋งŒ, style์— ์ ํ•ฉํ•œ ๋„๊ตฌ๋Š” css์ด๊ธฐ ๋•Œ๋ฌธ์— ์›ฌ๋งŒํ•œ ์Šคํƒ€์ผ ์†์„ฑ์€ css์—, javascript์—๋Š” cs์—์„œ ์„ค์ •ํ•œ ๊ฐ’์„ element์— ์ „๋‹ฌ๋งŒ ์‹œํ‚ค๊ณ  ์‹ถ๋‹ค. ๋•Œ๋ฌธ์— html, css, js ๋ชจ๋‘ ์ผ๋ถ€ ์ˆ˜์ •ํ–ˆ๋‹ค.

 

 index.html 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Momentum</title>
    <!-- link:css ์‹œ ์ž๋™์™„์„ฑ -->
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="hello">
      <h1 class="title">Hello</h1>
    </div>
    <script src="app.js"></script>
  </body>
</html>

 

 style.css 

body {
  background-color: beige;
}

h1 {
  color: cornflowerblue;
  transition: color 0.5s ease-in-out;
}

.title {
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
}

.clicked {
  color: tomato;
}

 

 app.js 

const h1 = document.querySelector(".hello:first-child h1");

function handleTitleClick() {
  const clickedClass = "clicked";
  if (h1.className === clickedClass) {
    h1.className = "";
  } else {
    h1.className = clickedClass;
  }
}

h1.addEventListener("click", handleTitleClick);

 

๊ทธ๋Ÿฌ๋‚˜ ์œ„ ์ฝ”๋“œ๋Š” ๋งŒ์•ฝ h1 ํƒœ๊ทธ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ, h1 ํƒœ๊ทธ์— ๋ฏธ๋ฆฌ ์„ค์ •ํ•ด์ค€ title ํด๋ž˜์Šค๊ฐ€ ์‚ฌ๋ผ์ง€๊ณ  clicked ํด๋ž˜์Šค๊ฐ€ ์žˆ์„ ๋•Œ์™€ ํด๋ž˜์Šค๊ฐ€ ์—†์„ ๋•Œ์˜ ์ƒํƒœ๋งŒ ๋ฐ˜๋ณต๋  ๊ฒƒ์ด๋‹ค. 

 

 

 

#3.8 CSS in Javascript part Three

 

์ด ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ๊ฒƒ์ด classList์ด๋‹ค. className์€ ๋ชจ๋“  ํด๋ž˜์Šค๋ฅผ ๊ต์ฒดํ•ด๋ฒ„๋ฆฌ์ง€๋งŒ, classList์—์„œ๋Š” class๋“ค์˜ ๋ชฉ๋ก์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ—ˆ์šฉํ•ด์ค€๋‹ค.

classList์—๋Š” ๋งŽ์€ function์ด ์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘ contains() function์€ ๋ช…์‹œ๋œ class๊ฐ€ html element์˜ class์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค. add์™€ remove๋Š” classList์—์„œ ๋ช…์‹œ๋œ class๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ํ•œ๋ˆˆ์— ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด style.css์—์„œ title ํด๋ž˜์Šค์˜ font-family: 'Times New Roman', Times, serif; ๋ฅผ ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค.

 

const h1 = document.querySelector(".hello:first-child h1");

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

h1.addEventListener("click", handleTitleClick);

 

toggle()์€ ํ† ํฐ์ด ์กด์žฌํ•˜๋ฉด ํ† ํฐ์„ ์ œ๊ฑฐํ•˜๊ณ , ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ถ”๊ฐ€ํ•ด์คŒ์œผ๋กœ์จ ์œ„์˜ ์ฝ”๋“œ๋ฅผ ๋”์šฑ ๊ฐ„๋žตํ•˜๊ฒŒ ์งค ์ˆ˜ ์žˆ๋‹ค. 

 

const h1 = document.querySelector(".hello:first-child h1");

function handleTitleClick() {
  h1.classList.toggle("clicked");
}

h1.addEventListener("click", handleTitleClick);

 

'javascript > ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

DAY 10  (0) 2023.01.04
DAY 8  (0) 2023.01.03
DAY 4  (0) 2022.12.30
DAY 3  (0) 2022.12.28
DAY 2  (1) 2022.12.28