Coding Archive

๋…ธ๋งˆ๋“œ ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ ๋ณธ๋ฌธ

๐Ÿ–ฅ๏ธ Clone Coding/Java Script

๋…ธ๋งˆ๋“œ ์ฝ”๋” - ๋ฐ”๋‹๋ผ JS๋กœ ํฌ๋กฌ ์•ฑ ๋งŒ๋“ค๊ธฐ

์ฝ”๋“ฑ์–ด 2022. 6. 3. 23:54

#1 INTRODUCTION

 

 

three.js๋Š” javascript๋กœ 3D๋ฅผ ๊ตฌํ˜„ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๋„ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

javascript ๊ธฐ์ˆ ์„ ์ข€ ๋” ๊นŠ๊ฒŒ ๋ฐฐ์šฐ๊ณ  ์‹ถ๋‹ค๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋„˜์–ด๊ฐ€๋ฉด ๋œ๋‹ค.

→ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์‰ฝ๊ฒŒ ๋งํ•ด ๋‚ด๊ฐ€ ํ•˜๋ ค๋Š” ์ผ์„ ๋„์™€์ฃผ๋Š” ๋„์šฐ๋ฏธ์ด๋‹ค.

(ex. React Native - javascript๋งŒ์œผ๋กœ ์•ˆ๋“œ๋กœ์ด๋“œ๋ž‘ ios์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค€๋‹ค.

Electron - javascript์™€ html, css๋กœ ๋ฐ์Šคํฌํ†ฑ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค€๋‹ค.)

 

Replit๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์•ฑ๊ณผ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. (๋ธŒ๋ผ์šฐ์ €์— vsc ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ๊น” ์ˆ˜ ์—†์„ ๋•Œ ์‚ฌ์šฉ)

 

 

 

 

#2 WELCOME TO JAVASCRIPT

 

0. Your First JS Project

. javascript๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์€, ๋ธŒ๋ผ์šฐ์ €์˜ console์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

. ํ„ฐ๋ฏธ๋„์„ ์‚ฌ์šฉํ•ด์„œ ํด๋”๋ฅผ ์ƒ์„ฑ

 

. html ํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €์— ๋Œ์–ด๋‹ค ์—ด๊ณ , ๊ทธ ์•ˆ์—์„œ ์‹คํ–‰

→๋ธŒ๋ผ์šฐ์ €๋Š” html์„ ์‹คํ–‰ํ•˜๊ณ  html์—์„œ css์™€  js ์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

(html์ด css๋ž‘ javascript์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ ‘์ฐฉ์ œ ๊ฐ™์€ ์—ญํ• )

css, js๋งŒ์œผ๋กœ๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋ญ”๊ฐ€๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์—†๋‹ค. (css๋‚˜ js๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ฐ๋‹ค๊ณ  ์‹คํ–‰ ×)

 

. css์™€ javascript์˜ ์œ„์น˜๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

<!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" />
<link rel="stylesheet" href="style.css" />
<title>Momentutm</title>
</head>
<body>
<script src="app.js"></script>*
</body>
</html>

 

 

 

1. Basic Data Types

๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์ข…๋ฅ˜

 

(1) Number

1) ์ •์ˆ˜(Integer) // 1, 2, 3, 4...

2) ์†Œ์ˆ˜(Float) // 1.555, 2.545345...

->Numberํƒ€์ž…์€ ์„œ๋กœ ์—ฐ์‚ฐ๊ธฐํ˜ธ(+, -, *, /)๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

(2) String

์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ฌธ์ž(Text)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

ํฐ๋”ฐ์˜ดํ‘œ("")๋˜๋Š” ์ž‘์€๋”ฐ์˜ดํ‘œ('')์˜ ์‚ฌ์ด์— ๋„ฃ์–ด์„œ ํ‘œํ˜„ํ•˜๋ฉฐ, " " ๋“ฑ์˜ ๊ณต๋ฐฑ๋„ ํฌํ•จ ๊ฐ€๋Šฅํ•˜๋‹ค.

Stringํƒ€์ž…์˜ ํ•ฉ์€ ๋‘ ๊ฐœ๋ฅผ ํ•ฉ์ณ์„œ ์ถœ๋ ฅํ•œ๋‹ค.

ex)"Hello, " + " My name is Nico" // Hello, My name is Nico

 

 

String+Number = String

ex) "Hello"+2 // "hello2"

 

 

 

2. Variables

. Js์—์„œ ๋ณ€์ˆ˜ (variable)์„ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์“ฐ๋Š” ๊ฒƒ์€ const์ด๋ฉฐ, const = constant(์ƒ์ˆ˜) ํ•ญ์ƒ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ์˜๋ฏธ

 

. ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ผ์ผ์ด ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์ค„์–ด๋“ ๋‹ค. (๋ณ€์ˆ˜์˜ ๊ฐ’๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ)

ex) 5์˜ ๋ณ€์ˆ˜๋ฅผ a๋กœ ์„ ์–ธ/ 2์˜ ๋ณ€์ˆ˜๋ฅผ b๋กœ ์„ ์–ธ

const a = 5;
const b = 2;

console.log(a + b);
console.log(a * b);
console.log(a / b);

 

. Js์—์„  ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์ค„ ๋•Œ ๋„์–ด์“ฐ๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š๊ณ , ๋ณดํ†ต ๋Œ€๋ฌธ์ž๋ฅผ ์จ์„œ ํ‘œ์‹œํ•ด์ค€๋‹ค.

=> camelcase (์ค‘๊ฐ„์ค‘๊ฐ„ ๋Œ€๋ฌธ์ž๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฒŒ ๋‚™ํƒ€๊ฐ™์ด ์ƒ๊ฒผ๋‹ค๊ณ  ํ•ด์„œ ๋ถ™์—ฌ์ง)

const myName = "nico";

console.log("hello " + myName);

 

 

 

3. const and let

. ๋ณ€์ˆ˜๋งŒ ๋“ค ๋•Œ let, const, var ์ฐจ์ด

 

1) const ์žฌ์„ ์–ธ ๊ธˆ์ง€, ์žฌํ• ๋‹น ๊ธˆ์ง€

const a = b;
const a = c;  // ์žฌ์„ ์–ธ ๊ธˆ์ง€

const a = b;
a = c;  // ์žฌํ• ๋‹น ๊ธˆ์ง€

 

2) let ์žฌ์„ ์–ธ ๊ธˆ์ง€, ์žฌํ• ๋‹น ๊ฐ€๋Šฅ

let a = b;
let a = c;  // ์žฌ์„ ์–ธ ๊ธˆ์ง€

let a = b;
a = c;  // ์žฌํ• ๋‹น์€ ๊ฐ€๋Šฅ

 

3) var ์žฌ์„ ์–ธ ๊ฐ€๋Šฅ, ์žฌํ• ๋‹น ๊ฐ€๋Šฅ

var a = b;
var a = c;
a = d;  //์žฌ์„ ์–ธ, ์žฌํ• ๋‹น ๊ฐ€๋Šฅ

 

 

. variable(๋ณ€์ˆ˜) ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€.

  1. const → ์ƒ์ˆ˜์ด๋ฏ€๋กœ ๊ฐ’ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ
  2. let → ๋ณ€์ˆซ๊ฐ’ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

const๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋ผ๋ฉด let์„ ์‚ฌ์šฉํ•œ๋‹ค.

๊ณผ๊ฑฐ์—๋Š” varํ˜• ๋ณ€์ˆ˜๋ฅผ ์ผ๋Š”๋ฐ, ์–ธ์–ด์— ๋Œ€ํ•œ ๋ณดํ˜ธ๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜๊ณ , ๋ณ€์ˆ˜ ๊ฐ’ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค. → ๋˜๋„๋ก ์“ฐ์ง€ ๋ง์ž!

const a = 5;
const b = 2;
let myName = "nico";

console.log(a + b);  // 7
console.log(a * b);  // 0
console.log(a / b);  // 2.5
console.log("hello " + myName);  // hello nico

myName = "nicolas";

console.log("your new name is " + myName);  // your new name is nicolas(์—…๋ฐ์ดํŠธ ๋œ myName์˜ ๊ฐ’์„ ๋ฐ˜์˜)

 

 

 

4. Booleans

booleans : ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ํ•œ ์ข…๋ฅ˜ (number, string, boolean...)

 

boolean ๊ฐ’์œผ๋กœ true, false๊ฐ€ ์žˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ๋Š” null, undefined๊ฐ€ ์žˆ๋‹ค.

  1. true =/= "true" (""์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฑด string)
  2. false =/= "false" (""์•ˆ์— ๋“ค์–ด๊ฐ€๋Š”๊ฑด string)
  3. null = ๊ฐ’์ด ์—†์Œ(๋น„์–ด ์žˆ์Œ). ์ž์—ฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ฐ’์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ํ™•์‹คํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์“ด๋‹ค.
    ๋ณ€์ˆ˜์— null(๊ฐ’์ด ์—†๋‹ค)์ด ํ• ๋‹น๋œ๋‹ค. ์ฆ‰, ๊ฐ’์ด ์ •์˜๋จ
    null =/= undefined
    null =/= false
  4. undefined = ๊ฐ’์ด ์ •์˜๋˜์ง€ ์•Š์Œ. ๋ณ€์ˆ˜๋Š” ์„ ์–ธํ–ˆ์ง€๋งŒ ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€๋Š” ์•Š์Œ.

 

 

 

5. Arrays

๋ฐ์ดํ„ฐ ์ •๋ฆฌํ•˜๋Š” ๋ฒ• → ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ค‘ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฑด ๋ฐฐ์—ด์ด๋‹ค.

๋ฐฐ์—ด์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜์—ดํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

 

๋ฐฐ์—ด(array)

- ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜ ์•ˆ์— ๋ฐ์ดํ„ฐ์˜ list๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒƒ.

- ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—๋„ ์žˆ๋Š” ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ด๊ณ , ํ•„์ˆ˜์ ์ธ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ๋กœ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ

- array๋Š” [ ] ๋Œ€๊ด„ํ˜ธ๋กœ ์—ด๊ณ  ๋‹ซ๋Š”๋‹ค.

- ํ•ญ์ƒ [ ] ์•ˆ์— ์ฝค๋งˆ(,)๋กœ ๋ฐ์ดํ„ฐ๋“ค์„ ๋‚˜์—ดํ•œ๋‹ค. ๋ณ€์ˆ˜๋„ ์“ฐ์ผ ์ˆ˜ ์žˆ๊ณ , boolean, text, ์ˆซ์ž ๋“ฑ ๋ฐ์ดํ„ฐ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

const daysOfWeek = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];

 

์œ„์˜ ๋ณ€์ˆ˜์—์„œ 5๋ฒˆ์งธ element ๊ฐ’์„ ์•Œ๊ณ  ์‹ถ์„ ๋•

console.log(daysOfWeek[4])

๋ผ๊ณ  ํ•ด์•ผ 5๋ฒˆ์งธ ๊ฐ’์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์ปดํ“จํ„ฐ๋Š” ์ˆซ์ž๋ฅผ 0๋ถ€ํ„ฐ ์„ธ๊ธฐ ๋•Œ๋ฌธ์—, “mon”์€ 0๋ฒˆ์งธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

์œ„์˜ ์ƒํƒœ์—์„œ daysOfWeek์ด๋ž€ ๋ณ€์ˆ˜์— ํ•˜๋‚˜์˜ ๊ฐ’์„ ๋” ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ดํ•œ๋‹ค.

const daysOfWeek = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];

daysOfWeek.push(“holiday”)

→ push๋Š” ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ.

 

 

+) Q

const๋กœ ์„ ์–ธํ•˜๋ฉด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฑฐ๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ const daysOfWeek = ["mon", "tue", "wed", "thu", "fri", "sat"]; ์—์„œ

์–ด๋–ป๊ฒŒ daysOfWeek.push("sun"); ์„ ์จ์„œ ๋‚ด์šฉ๋ฌผ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€?

array ์•ˆ์˜ ๋‚ด์šฉ๋ฌผ์€ ์˜ˆ์™ธ์ธ ๊ฑด์ง€?

-

const a = 2; ์ด๋ ‡๊ฒŒ ์žˆ์œผ๋ฉด a = 4; ์ด๋ ‡๊ฒŒ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๋‚ด์šฉ๋ฌผ ์•ˆ์˜ ์š”์†Œ๋“ค์€ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ ๋ฐ•์Šค๋กœ ์ƒ๊ฐํ•˜๋ฉด const daysOfWeek = ["mon", "tue", "wed", "thu", "fri", "sat"]; ์ด๋ ‡๊ฒŒ ์„ ์–ธ์„ ํ•˜๋ฉด ์ดํ›„์— daysOfWeek = ["hi"]; ์ด๋ ‡๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ฐ•์Šค ๊ทธ ํ†ต์งธ๋กœ ๋ฐ”๊พธ๋ ค๊ณ  ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ๋ฐ•์Šค ์•ˆ์˜ ๋‚ด์šฉ๋ฌผ๋“ค์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜๋Š” ์žˆ๋‹ค.

 

 

 

6. Objects

์„ค๋ช…์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ๋“ค์€ array๋ฅผ, ์„ค๋ช…์ด ํ•„์š”ํ•œ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ๋“ค์€ object๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

object๋Š” property๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์ฃผ๋ฉฐ, { }๋ฅผ ์‚ฌ์šฉํ•ด ์—ด๊ณ  ๋‹ซ๋Š”๋‹ค.

object์˜ property๊ฐ’์€ (=)์ด ์•„๋‹Œ (:)๋กœ ํ‘œํ˜„, ๊ทธ๋ฆฌ๊ณ  ์—ฐ๊ฒฐ์€ ;๊ฐ€ ์•„๋‹Œ ,(์‰ผํ‘œ)๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.

const player = {
name : tomato,
color : red,
food : true,
};

console.log(player);  // {name: "tomato", color: "red", food: true}

 

property๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

 1)

console.log(player.name); // tomato

 2)

console.log(player["name"]); // tomato

 

๋˜ํ•œ property๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์„ ์–ธ๋œ object๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

*const๋Š” let๊ณผ ๋‹ค๋ฅด๊ฒŒ update๊ฐ€ ์•ˆ๋˜์ง€๋งŒ ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฝ์šฐ ์ „์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์†์„ฑ ๊ฐ’์„ ์ˆ˜์ •/์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” update๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

ex)

const player = {
name : tomato,
color : red,
food : true,
number : 5,
};

console.log(player);  // {name: "tomato", color: "red", food: true, number: 5}

player.color = "blue";
console.log(player.color);  // blue

player.number = player.number + 5;  
console.log(player.number);  // 10

 

console.log(); ์—์„œ console์€ object์ด๊ณ , ๊ทธ ์•ˆ์— log๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

Comments