JavaScript๐Ÿ’ก:: ๋ณ€์ˆ˜, ๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ

๊ฐœ์ธ ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค

JavaScript๋ž€?

  • JavaScript๋Š” ์›นํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ณ ์•ˆ๋œ ์–ธ์–ด. ์˜ค๋Š˜๋‚  ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ”Œ๋žซํผ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ์œ ์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค.
  • ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ HTML๋กœ ๋ผˆ๋Œ€๋ฅผ ๋งŒ๋“ค๊ณ , CSS๋กœ ๋””์ž์ธํ•˜๊ณ  ๊พธ๋ช„๋‹ค๋ฉด, JavaScript๋กœ ๋™์ ์œผ๋กœ ์›€์ง์ด๊ฒŒ ํ•œ๋‹ค

โ—Data Types

1. ์ˆซ์ž number

  • ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•˜๊ฑฐ๋‚˜ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž….
  • ๊ธฐ๋ณธ์ ์œผ๋กœ + - * / ๋“ฑ์˜ ์‚ฐ์ˆ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ Math ๋ผ๋Š” ๋‚ด์žฅ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆ˜ํ•™ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜๋„ ์žˆ๋‹ค

    โ• NaN Not a Number

    • ํ•ด๋‹น ํ•˜๋Š” ๊ฐ’์ด ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ž€ ๋œป

2. ๋ฌธ์ž, ๋ฌธ์ž์—ด string

  • String์€ ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž….
  • ๋ฌธ์ž์—ด์ด๋ผ ํ•จ์€ ๋ฌธ์ž ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ํ•˜๋‚˜์˜ ํ‘œํ˜„์„ ์ด๋ฃจ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ

3. ๋ธ”๋ฆฌ์–ธ boolean

  • true, false๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ผ๋ฆฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…

4. ๊ฐ์ฒด object

  • function ํ•จ์ˆ˜
  • array ๋ฐฐ์—ด
  • date ๋‚ ์งœ
  • regExp ์ •๊ทœ์‹

5. null

  • ํ……ํ…… ๋น„์–ด์žˆ๋Š” ๊ฐ’, empty

6. undefined

  • ์ดˆ๊ธฐํ™”(์„ ์–ธ) ๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์•˜์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’

โ—๋ณ€์ˆ˜ Variable

  • ๋ณ€์ˆ˜(Variable)๋Š” (๋ฌธ์ž๋‚˜ ์ˆซ์ž ๊ฐ™์€) ๊ฐ’์„ ๋‹ด๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ ๊ฐ’์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์—ฌ๊ธฐ์— ๋‹ด๊ฒจ์ง„ ๊ฐ’์€ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.
    โœจ์ฐธ๊ณ โœจ๋ณ€์ˆ˜๋Š” ์ฝ”๋“œ์˜ ์žฌํ™œ์šฉ์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค

โ—‹๋ณ€์ˆ˜์˜ ์„ ์–ธ

  • var

    • ์ „ํ†ต์ ์œผ๋กœ JavaScript์—์„œ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹
    • ๐Ÿšฉ์ง‘์ค‘! var ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•  ์ !

      • hoisting: ์–ด๋””์— ์„ ์–ธํ–ˆ๋ƒ์— ์ƒ๊ด€์—†์ด ์„ ์–ธํ•œ ๊ฒƒ์„ ํ•ญ์ƒ ์ ค ์œ„๋กœ ๋Œ์–ด ์˜ฌ๋ ค์ฃผ๋Š” ๊ฒƒ
      • ์ค‘๋ณต๋œ ๋ณ€์ˆ˜๋ช… ์‚ฌ์šฉ ๊ฐ€๋Šฅ
      • var ์ƒ๋žต ๊ฐ€๋Šฅ
      • Scope Rule: ๋ธ”๋Ÿญ์„ ์ฒ ์ €ํžˆ ๋ฌด์‹œ
{
  name = 'April';
  var name;
}
console.log(name);
// ๋ธ”๋Ÿญ{}์•ˆ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ–ˆ์Œ์—๋„ ๋ธ”๋Ÿญ ๋ฐ–์—์„œ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Œ

โœจ์ฐธ๊ณ โœจUse strict;

  • Strict Mode์˜ ์„ ์–ธ๋ฐฉ์‹
  • ES5๋ถ€ํ„ฐ ์ ์šฉ๋˜๋Š” ํ‚ค์›Œ๋“œ๋กœ,
  • ์•ˆ์ „ํ•œ ์ฝ”๋”ฉ์„ ์œ„ํ•œ ํ•˜๋‚˜์˜ ๊ฐ€์ด๋“œ๋ผ์ธ
    • ์ฝ”๋“œ์— ๋” ๋‚˜์€ ์˜ค๋ฅ˜ ๊ฒ€์‚ฌ๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • Strict Mode๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์˜ˆ๋ฅผ ๋“ค์–ด ์•”์‹œ์ ์œผ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ฝ๊ธฐ ์ „์šฉ ์†์„ฑ์— ๊ฐ’์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ํ™•์žฅํ•  ์ˆ˜ ์—†๋Š” ๊ฐœ์ฒด์— ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค.
  • 'use strict';
  • let (added in ES6)

    • ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ธ”๋ก, ๊ตฌ๋ฌธ ๋˜๋Š” ํ‘œํ˜„์‹ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ,
    • var ํ‚ค์›Œ๋“œ๊ฐ€ ๋ธ”๋ก ๋ฒ”์œ„๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์ „์—ญ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ์ ์ด๋‹ค
  • const

    • ํ•œ ๋ฒˆ ํ• ๋‹นํ•˜๋ฉด ๊ฐ’์ด ์ ˆ๋Œ€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ฒƒ
  • ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
let ๋ณ€์ˆ˜๋ช…;
let ๋ณ€์ˆ˜๋ช… = ์ดˆ๊ธฐ์— ํ• ๋‹นํ•  ๊ฐ’;

๐Ÿšฉ์ง‘์ค‘!

  • Mutable : ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜๋Š” let ์œผ๋กœ ์„ ์–ธ
  • Immutable: ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ํ•œ ๋ณ€์ˆ˜๋Š” cosnt ๋กœ ์„ ์–ธ

โ—์—ฐ์‚ฐ์ž

โ—‹๋น„๊ต ์—ฐ์‚ฐ์ž

ยบ๋Œ€์ž… ์—ฐ์‚ฐ์ž

  • a=1 '='๋Š” ์šฐํ•ญ์˜ ๊ฐ’์ธ 1์„ ์ขŒํ•ญ์˜ ๋ณ€์ˆ˜ a์— ๋Œ€์ž…ํ•˜๋Š” '๋Œ€์ž… ์—ฐ์‚ฐ์ž'

ยบ๋น„๊ต ์—ฐ์‚ฐ์ž

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋น„๊ต๋ž€ ์ฃผ์–ด์ง„ ๊ฐ’๋“ค์ด ๊ฐ™์€์ง€, ๋‹ค๋ฅธ์ง€, ํฐ์ง€, ์ž‘์€์ง€๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

ยบ๋™๋“ฑ ์—ฐ์‚ฐ์ž

  • == ์ขŒํ•ญ๊ณผ ์šฐํ•ญ์„ ๋น„๊ตํ•ด์„œ ์„œ๋กœ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด true ๋‹ค๋ฅด๋‹ค๋ฉด false๊ฐ€ ๋œ๋‹ค
alert(1==2)             //false
alert(1==1)             //true
alert("one"=="two")     //false 
alert("one"=="one")     //true

ยบ์ผ์น˜ ์—ฐ์‚ฐ์ž

  • === ์ขŒํ•ญ๊ณผ ์šฐํ•ญ์ด ์ •ํ™•ํ•˜๊ฒŒ ๊ฐ™์„ ๋•Œ true ๋‹ค๋ฅด๋ฉด false๊ฐ€ ๋œ๋‹ค
alert(1=='1');                  //true
alert(1==='1');                 //false

alert(null == undefined);       //true
alert(null === undefined);      //false
alert(true == 1);               //true
alert(true === 1);              //false
alert(true == '1');             //true
alert(true === '1');            //false
 
alert(0 === -0);                //true
alert(NaN === NaN);             //false

ยบ๋ถ€์ •๊ณผ ๋ถ€๋“ฑํ˜ธ

  • != !๋Š” ๋ถ€์ •์„ ์˜๋ฏธํ•œ๋‹ค. '๊ฐ™๋‹ค'์˜ ๋ถ€์ •์€ '๊ฐ™์ง€ ์•Š๋‹ค'์ด๋‹ค. ์ด๊ฒƒ์„ ๊ธฐํ˜ธ๋กœ๋Š” !=๋กœ ํ‘œ์‹œํ•œ๋‹ค
  • !== !=์™€ ==์˜ ๊ด€๊ณ„์™€ ๊ฐ™๋‹ค. ์ •ํ™•ํ•˜๊ฒŒ ๊ฐ™์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ
  • > ์ขŒํ•ญ์ด ์šฐํ•ญ๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์ฐธ, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๊ฑฐ์ง“์ž„์„ ์•Œ๋ ค์ฃผ๋Š” ์—ฐ์‚ฐ์ž
  • >= ์ขŒํ•ญ์ด ์šฐํ•ญ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค

โ—‹์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž

console.log(1 + 1); // add
console.log(1 - 1); // substract
console.log(1 / 1); // divide
console.log(1 * 1); // multiply
console.log(5 % 2); // remainder ๋‚˜๋ˆ„๊ณ  ๋‚˜๋จธ์ง€ ๊ฐ’
console.log(2 ** 3); // exponentiation 2์˜ 3์Šน

โ—‹ํ• ๋‹น ์—ฐ์‚ฐ์ž

let x = 3;
let y = 6;
x += Y; // x = x + y;
x -= Y; // x = x - y;
x *= Y; // x = x * y;
x /= Y; // x = x / y;

โ—‹๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

  • || (or) true ๊ฐ’์ด ๋‚˜์˜ค๋ฉด ์ค‘๋‹จ, ๊ทธ ๋’ค์˜ ๊ฐ’์€ ๋ฌด์‹œ
    console.log('or: ${value1 || value2 || check()}');

  • $$ (and) ๋ชจ๋“  ๊ฐ’์ด true ์ด์–ด์•ผ return.

    • (and)๋Š” null๊ฐ’ ์ฒดํฌํ•  ๋•Œ์—๋„ ๋งŽ์ด ์‚ฌ์šฉ๋จ
      console.log('or: ${value1 $$ value2 $$ check()}');
  • ! (not) ๋…ผ๋ฆฌ ๋ถ€์ •์˜ ์˜๋ฏธ. ๊ฐ’์„ ๋ฐ˜๋Œ€๋กœ ๋ณ€๊ฒฝ. true์ผ ๊ฒฝ์šฐ๋Š” false๋กœ, false์ผ ๊ฒฝ์šฐ๋Š” true๋กœ ๋ณ€๊ฒฝ
    console.log(!value1);

โ—‹์กฐ๊ฑด(์‚ผํ•ญ) ์—ฐ์‚ฐ์ž

  • 3๊ฐœ์˜ ํ•ญ์„ ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ ์—ฐ์‚ฐ์ž.
    • ์กฐ๊ฑด ์—ฐ์‚ฐ์ž๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ 2๊ฐœ์˜ ๊ฐ’์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค
  • ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์กฐ๊ฑด ? ๊ฐ’1 : ๊ฐ’2
// condition ? value1 : value2
const name = 'april';
console.log(name === 'april' ? 'yes' : 'no'):

โ—if๋ฌธ_ ์กฐ๊ฑด๋ฌธ

์กฐ๊ฑด๋ฌธ์ด๋ž€?

  • ์ปดํ“จํ„ฐ๊ฐ€ ๊ณ„์‚ฐ๊ธฐ์™€ ๊ตฌ๋ถ„๋˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ฐจ์ด
  • ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋”ฐ๋ผ application์„ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ
  • ํ”„๋กœ๊ทธ๋žจ์„ ๋˜‘๋˜‘ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ
  • if, else if, else
const name = 'april';

if(name === 'april') {
	console.log('Hello april');
} else if (name === 'coder') {
	console.log('You are amazing coder');
} else {
	console.log('Unknown');
}

โ—switch๋ฌธ_ ๋‹ค์ค‘ ์กฐ๊ฑด๋ฌธ

  • ๋‹ค์ค‘ ์ฒดํฌํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ
  • if else๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค๋ฉด switch๋ฅผ ์‚ฌ์šฉ
const browser = 'IE';
switch (browser) {
  case 'IE';
    console.log('go away!');
      break;
  case 'Chrome';
    console.log('love you!');
      break;
  case 'firefox';
    console.log('nice!');
      break;
  default
    console.log('same all!');
      break;
}

โœจ์ฐธ๊ณ โœจ

  • break; ์ฆ‰์‹œ ์ค‘๋‹จ
  • continue; ์ง€๊ธˆ์˜ ๋‹จ๊ณ„๋งŒ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค์Œ์œผ๋กœ ์ด๋™

โ—for๋ฌธ_ ๋ฐ˜๋ณต๋ฌธ

๋ฐ˜๋ณต๋ฌธ์ด๋ž€?

  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ๋ฐ˜๋ณต ์ž‘์—…์„ ์‹คํ–‰
  • loop, iterate
  • for๋ฌธ, while๋ฌธ
  • ์กฐ๊ฑด๋ฌธ์ด ์ปดํ“จํ„ฐ๋ฅผ ๋˜‘๋˜‘ํ•˜๊ฒŒ ํ•œ๋‹ค๋ฉด, ๋ฐ˜๋ณต๋ฌธ์€ ์ปดํ“จํ„ฐ๋ฅผ ๊ฐ•๋ ฅํ•˜๊ฒŒ ํ•œ๋‹ค
for (i = 3; i > 0; i--) {
	console.log('for: ${i}');
}
  • ๋ธ”๋Ÿญ ์•ˆ์— let์œผ๋กœ i์˜ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ
for (let i = 3; i > 0; i = i - 2) {
	console.log('inline variable for: ${i}');
}

โ—while๋ฌธ_ ๋ฐ˜๋ณต๋ฌธ

1. while๋ฌธ

  • ์กฐ๊ฑด์„ ๋จผ์ € ์ฒดํฌ ํ›„ ์‹คํ–‰. ์กฐ๊ฑด๋ฌธ์ด ์ผ์น˜ํ•  ๊ฒฝ์šฐ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์‚ฌ์šฉ
let i = 3;
while (i > 0) {
	console.log('while: ${i}');
	i--;
}

2. do while๋ฌธ

  • ์‹คํ–‰ํ•œ ๋‹ค์Œ์— ์กฐ๊ฑด์ด ๋งž๋Š”์ง€ ์•„๋‹Œ์ง€ ๊ฒ€์‚ฌ. ์ผ๋‹จ ์‹คํ–‰ํ•˜๊ณ  ์กฐ๊ฑด์„ ์ฒดํฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์‚ฌ์šฉ
let i = 3;
do {
  console.log('do while: ${i}');
    i--;
} while (i > 0); 

โœ… ๋ชฉํ‘œ!

  • JavaScript์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ 
  • ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์ตํžŒ๋‹ค
  • ๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ์„ ์ตํžŒ๋‹ค

๋“œ๋ฆผ์ฝ”๋”ฉ by ์—˜๋ฆฌ
์ƒํ™œ์ฝ”๋”ฉ
MDN

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ