Language/JavaScript

[JS] JavaScript ๊ธฐ์ดˆ ๋ฌธ๋ฒ•

Ella_K 2022. 7. 4. 01:02

 ๐Ÿ”ฅ JavaScript

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด
  • ๋™์ ์œผ๋กœ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์–ธ์–ด
  • HTMLํŒŒ์ผ <head> ~ </head> ํƒœ๊ทธ์•ˆ์— <script> ~ </script> ํƒœ์Šค๋กœ ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด ์ž‘์„ฑ
  • ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์ฝ˜์†”์ฐฝ(๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ํด๋ฆญ → ๊ฒ€์‚ฌ → console/ ์œˆ๋„์šฐ F12) ์„ ์ด์šฉํ•˜์—ฌ ๋„์–ด๋†“์€ ํŽ˜์ด์ง€์— ๋น ๋ฅด๊ฒŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • console.log(๋ณ€์ˆ˜) : ์ฝ˜์†” ์ฐฝ์— ๊ด„ํ˜ธ ์•ˆ์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•ด์คŒ
  • primitive type์˜ ๊ฐ’์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฒƒ๋“ค์ด ๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ์ฒด ๊ธฐ๋ฐ˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ด๋‹ค.

 


๐Ÿ”ฅ Data types

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์•Œ์•„์„œ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ํŒŒ์•…ํ•˜๊ณ  ๊ฐ’์„ ์ €์žฅํ•ด์„œ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ๋”ฐ๋กœ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

primitive values ์™€ object ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘‰ ๋ณ€์ˆ˜ ์„ ์–ธ

  • var : ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ, ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
  • let : ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ, ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
  • const : ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ, ์žฌํ• ๋‹น ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅ
  • ๋ณ€์ˆ˜ ์„ ์–ธ์—๋Š” const๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ , ์žฌํ• ๋‹น์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ let์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๐Ÿ‘‰ Primitive values

Boolean : True, Flase
Null: null
Undefined: ์ •์˜๋˜์ง€ ์•Š์€ ๊ฐ’
Number: ์ˆซ์žํ˜• (์ •์ˆ˜, ๋ถ€๋™ ์†Œ์ˆ˜์ , ๋ฌดํ•œ๋Œ€, NaN ํฌํ•จ)
String: ๋ฌธ์ž์—ด

 

์ˆซ์žํ˜•

  • ๋ณ€์ˆ˜ ์„ ์–ธ, ๋Œ€์ž…
let num = 20 // ๋ณ€์ˆ˜ ์„ ์–ธ
num = 14 // ๋Œ€์ž…

 

๋ฌธ์ž์—ด

  • ๋”ํ•˜๊ธฐ, ์ธ๋ฑ์‹ฑ ๊ฐ€๋Šฅ
let first = 'Amy'
let last = 'Kim'

> first + last // 'AmyKim'
> first[0] // 'A'

 

๐Ÿ‘‰ Object  ์ž๋ฃŒํ˜•

Array
Object (์•„๋ž˜ ๊ฐ์ฒด ์„น์…˜ ์ฐธ๊ณ )

 

๋ฐฐ์—ด

let name = ['Amy', 'Tom']
> name[0] // 'Amy'
> name.length // 2

name.push('David')
> name // ['Amy', 'Tom', 'David']

 

๊ฐ์ฒด (์•„๋ž˜ ๊ฐ์ฒด ์„น์…˜ ์ฐธ๊ณ )

 


๐Ÿ”ฅ ์—ฐ์‚ฐ์ž

์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž(Arithmetic operators) +,  -,  *,  /,  %,  **
์ฆ๊ฐ€, ๊ฐ์†Œ ์—ฐ์‚ฐ์ž ++. --
ํ• ๋‹น ์—ฐ์‚ฐ์ž(Assignment operator) =, +=, *=, -=. /= 
๋น„๊ต ์—ฐ์‚ฐ์ž(Comparison operator) ===(strict equality), !==(strict non-equality), <, >, <=, >=
๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž(logical operator) &&(AND), ||(OR), !(NOT)
==, != ์€ ๊ฐ’์ด ๋™์ผํ•œ์ง€ ์—ฌ๋ถ€๋Š” ํ…Œ์ŠคํŠธ ํ•˜์ง€๋งŒ, ๊ฐ’์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ๋™์ผํ•œ์ง€ ์—ฌ๋ถ€๋Š” ํ…Œ์ŠคํŠธ ํ•˜์ง€ ์•Š์Œ
๋ฐ˜๋ฉด ===, !== ์€ ๊ฐ’๊ณผ ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋‘˜๋‹ค ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ์Œ

 


๐Ÿ”ฅ ์กฐ๊ฑด๋ฌธ

๐Ÿ‘‰ if ๋ฌธ

function is_adult(age){
	if(age > 20){
		alert('์„ฑ์ธ์ด์—์š”')
	} else if (age > 10) {
		alert('์ฒญ์†Œ๋…„์ด์—์š”')
	} else {
		alert('10์‚ด ์ดํ•˜!')
	}
}

is_adult(12)

 

๐Ÿ‘‰ switch๋ฌธ

switch (expression) {
  case choice1:
    choice1์ธ ๊ฒฝ์šฐ ์‹คํ–‰ํ•  ์ฝ”๋“œ
    break;

  case choice2:
    choice2์ธ ๊ฒฝ์šฐ ์‹คํ–‰ํ•  ์ฝ”๋“œ
    break;

  // ์›ํ•˜๋Š” ๋งŒํผ ๋งŽ์€ case๋ฅผ ํฌํ•จํ•˜์‹ญ์‹œ์˜ค

  default:
    ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ(actually, just run this code)
}
const select = document.querySelector('select');
const para = document.querySelector('p');

select.addEventListener('change', setWeather);


function setWeather() {
  const choice = select.value;

  switch (choice) {
    case 'sunny':
      para.textContent = 'sunny';
      break;
    case 'rainy':
      para.textContent = 'rainy';
      break;
    case 'snowing':
      para.textContent = 'snowing';
      break;
    case 'overcast':
      para.textContent = 'overcast';
      break;
    default:
      para.textContent = '';
  }
}

 


๐Ÿ”ฅ ๋ฐ˜๋ณต๋ฌธ

  • for, while, do...while์ด ์žˆ๋‹ค. 
  • continue์™€ break ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๐Ÿ‘‰ for ๋ฌธ

  • ๊ธฐ๋ณธ ๊ตฌ์กฐ
for (์ดˆ๊ธฐํ™”์‹; ์ข…๋ฃŒ ์กฐ๊ฑด; ์ฆ๊ฐ์‹) {
  // ์‹คํ–‰ํ•  ์ฝ”๋“œ
}
for (let i = 0; i < 100; i++) {
	console.log(i);
}

 

  • ๋”•์…”๋„ˆ๋ฆฌ๋Š” key๊ฐ’์„ ๋ฐฐ์—ด์€ index๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ˜๋ณต๋ฌธ
for (let key in ๊ฐ์ฒด) {
  // ์‹คํ–‰ํ•  ์ฝ”๋“œ
}
const dict = {'name':'Amy', 'age':25}
for (const key in dict){console.log(key)}
// name
// age

 

๐Ÿ‘‰ While๋ฌธ

์ดˆ๊ธฐํ™”์‹
while (์ข…๋ฃŒ ์กฐ๊ฑด) {
  // ์‹คํ–‰ํ•  ์ฝ”๋“œ

  ์ฆ๊ฐ์‹
}

 

๐Ÿ‘‰ do ... While๋ฌธ

์ดˆ๊ธฐํ™”์‹
do {
  ์‹คํ–‰ํ•  ์ฝ”๋“œ

  ์ฆ๊ฐ์‹
} while (์ข…๋ฃŒ ์กฐ๊ฑด)

 


๐Ÿ”ฅ ํ•จ์ˆ˜

// ๋งŒ๋“ค๊ธฐ
function ํ•จ์ˆ˜์ด๋ฆ„(๋งค๊ฐœ๋ณ€์ˆ˜) {
	๋‚ด๋ฆด ๋ช…๋ น๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž‘์„ฑ
}
// ์‚ฌ์šฉํ•˜๊ธฐ
ํ•จ์ˆ˜์ด๋ฆ„(์ธ์ž);
// ๋งŒ๋“ค๊ธฐ
function ํ•จ์ˆ˜์ด๋ฆ„(๋งค๊ฐœ๋ณ€์ˆ˜) {
	๋‚ด๋ฆด ๋ช…๋ น๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ž‘์„ฑ
    return result
}
// ์‚ฌ์šฉํ•˜๊ธฐ
result = ํ•จ์ˆ˜์ด๋ฆ„(์ธ์ž);

 


๐Ÿ”ฅ ๊ฐ์ฒด (Object) ๊ธฐ๋ณธ

 

๐Ÿ‘‰ ๊ฐ์ฒด ์ดˆ๊ธฐํ™”

  • ๊ฐ์ฒด ์•ˆ์— ๋ฉค๋ฒ„๋“ค์€ (property, method) {} ๊ด„ํ˜ธ ์•ˆ์—์„œ ',' ๋กœ ๊ตฌ๋ถ„
  • ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฉค๋ฒ„์˜ ๊ฐ’์€ ์–ด๋–ค ๊ฒƒ์ด๋ผ๋„ ๋  ์ˆ˜ ์žˆ์Œ
  • Property(์†์„ฑ)๋Š” key(์†์„ฑ๋ช…)์™€ value(์†์„ฑ๊ฐ’)๋กœ ๊ตฌ์„ฑ
var person = {};
const person = {
  name: {
   first: 'Bob',
   last: 'Smith'
  }, 
  age: 32,
  gender: 'male',
  interests: ['music', 'skiing'],
  bio: function() {
    alert(this.name[0] + ' ' + this.name[1] + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
  },
  greeting: function() {
    alert('Hi! I\'m ' + this.name[0] + '.');
  }
};
name, age, gender, intersts๋Š” property
bio, greeting์€ method

 

๐Ÿ‘‰ ์  ํ‘œ๊ธฐ๋ฒ•

  • dic.key ๋˜๋Š” dic.method๋ฅผ ์ด์šฉํ•ด์„œ(dic.๋ฉค๋ฒ„๋ช…) ๊ฐ์ฒด์˜ property์™€ method์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์œ„์˜ ๊ฐ์ฒด ์˜ˆ์‹œ์—์„œ
>> person.name // {first: 'Bob', last: 'Smith'}
>> person.name.first // 'Bob'
>> person.age // 32
>> person.interests[0] // 'music'
>> person.bio() // Hi! I'm Bob. ๋‚ด์šฉ์˜ ์ฐฝ์ด ๋œธ

 

๐Ÿ‘‰ ๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•

  • dic[key] ๋ฅผ ์ด์šฉํ•ด์„œ property์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. (method๋Š” ์ ์œผ๋กœ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜์žˆ์Œ)
person['age'] // 32
person['name']['first'] // 'Bob'

 

๐Ÿ‘‰ ๊ฐ์ฒด ๋ฉค๋ฒ„ ์„ค์ •

  • ' . ' ๊ณผ ' [ ] ' ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด์— ์ƒˆ๋กœ์šด ๋ฉค๋ฒ„๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๋ฉค๋ฒ„๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.
person.age = 45;
person['name']['last'] = 'Cratchit';

>> person.age // 45
>> person['name']['last'] // 'Cratchit'
person['height'] = 170
person.farewell = function() { alert("Bye everybody!"); }

>> person['height'] // 170
>> person.farewell() // Bye everybody! ๋‚ด์šฉ์˜ ์ฐฝ์ด ๋œฌ๋‹ค
const dataname = 'opinion'
const datavalue = 'yes'
person[dataname] = datavalue

>> person.opinion // 'yes'

 

๐Ÿ‘‰ This

  • ์ง€๊ธˆ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ด
var person1 = {
  name: 'Chris',
  greeting: function() {
    alert('Hi! I\'m ' + this.name + '.');
  }
}

var person2 = {
  name: 'Deepti',
  greeting: function() {
    alert('Hi! I\'m ' + this.name + '.');
  }
}

>> person1.greeting() // Hi! I'm Chris. ๋‚ด์šฉ์˜ ์ฐฝ์ด ๋œฌ๋‹ค
>> person2.greeting() // Hi! I'm Deepti. ๋‚ด์šฉ์˜ ์ฐฝ์ด ๋œฌ๋‹ค

 


Source