Skip to content

Latest commit

ย 

History

History
315 lines (214 loc) ยท 7.31 KB

File metadata and controls

315 lines (214 loc) ยท 7.31 KB

JavaScript

JavaScript๋Š” HTML๊ณผ CSS๋กœ ๋งŒ๋“ค์–ด์ง„ ์›นํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ์–ธ์–ด๋‹ค.

ES6 + Syntax

Var, Let, Const

Variable

var (don't ever use this!) let (added in ES6)

@seulhyi_variable

Variable types

primitive type์€ ๋”์ด์ƒ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด์งˆ ์ˆ˜ ์—†๋Š” ์•„์ดํ…œ์œผ๋กœ number, string, boolean, null, undefined, symbol ๋“ฑ์ด ์žˆ๋‹ค.

object๋Š” ์‹ฑ๊ธ€ ์•„์ดํ…œ๋“ค์„ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋ฌถ์–ด ํ•œ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” function๋„ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ค‘ ํ•˜๋‚˜๋กœ์จ ๋ณ€์ˆ˜์˜ ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๊ณ  ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ๋„ ์ „๋‹ฌ์ด ๋œ๋‹ค.

Hoisting

ํ˜ธ์ด์ŠคํŒ…์ด๋ž€ ์–ด๋””์— ์„ ์–ธํ–ˆ๋ƒ์— ์ƒ๊ด€์—†์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „ ๋ณ€์ˆ˜ ์„ ์–ธ/ํ•จ์ˆ˜ ์„ ์–ธ์ด ํ•ด๋‹น ์Šค์ฝ”ํ”„์˜ ์ œ์ผ ์œ„๋กœ ๋Œ์–ด์˜ฌ๋ ค ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

var testA;
console.log("test๊ฐ’์€" + testA); // undefined
console.log("test๊ฐ’์€" + testA); // undefined
var testA;

์ตœ์ƒ์œ„์— ์„ ์–ธํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค.

let testB;
console.log("test๊ฐ’์€" + testB); // undefined
console.log("test๊ฐ’์€" + testB); // Error
let testB;

var๊ณผ let, const ๋ชจ๋‘ ํ˜ธ์ด์ŠคํŒ…์ด ๋˜์ง€๋งŒ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. var์€ ์„ ์–ธ ์ „๊ณผ ํ›„๊ฐ€ ๊ฐ™๋‹ค. var์€ ์„ ์–ธ๊ณผ ๋™์‹œ์— ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค.

let๊ณผ const์˜ ๊ฒฝ์šฐ var๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ณ€์ˆ˜์˜ ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ ์‚ฌ์ด์— ์ผ์‹œ์  ์‚ฌ๊ฐ ์ง€๋Œ€(TDZ)๊ฐ€ ์กด์žฌํ•˜๊ณ , TDZ์—์„œ ๊ด€๋ฆฌ ์ค‘์ผ ๋•Œ(let ๋ณ€์ˆ˜์˜ ์„ ์–ธ ๋˜๋Š” const ๋ณ€์ˆ˜์˜ ์„ ์–ธ ๋ฐ ํ• ๋‹น ์ฝ”๋“œ๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „)์— ์‚ฌ์šฉํ•˜๋ ค ํ•œ๋‹ค๋ฉด ReferenceError ๋ฐœ์ƒํ•œ๋‹ค.

ํ˜ธ์ด์ŠคํŒ…์€ ํฌ๊ฒŒ ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์€ ๋ฌด์—‡๋ณด๋‹ค ๊ฐ€์žฅ ๋จผ์ € ์ด๋ฃจ์–ด์ง„๋‹ค.

๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

var์€ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๋ฉด ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๊ฐ€ ๊ฑฐ์˜ ๋™์‹œ์— ์ด๋ฃจ์–ด์ง„๋‹ค. ์„ ์–ธ๋ถ€ ์œ„์น˜์— ์ƒ๊ด€ ์—†์ด ์ฐธ์กฐ, ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


๊ฑฐ๋“ญ์ œ๊ณฑ์€ ๊ณฑ์…ˆ๋ณด๋‹ค ์—ฐ์‚ฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.

์ž๋ฃŒํ˜•

๋ถˆ๋ฆฐํ˜•์ด ์ˆซ์žํ˜•์œผ๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ฒฝ์šฐ true๋Š” 1๋กœ, false๋Š” 0์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

๋ถˆ๋ฆฐํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ๋Š”, ๋ณดํ†ต true๊ฐ€ ๋‚˜์˜ค์ง€๋งŒ, ๋นˆ๋ฌธ์ž(''), 0, ๊ทธ๋ฆฌ๊ณ  NaN์€ false๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

// ์ผ์น˜ ๋™๋“ฑ ๋น„๊ต
console.log(2 === "2"); // false
console.log(2 == "2"); // true

// ๋ถˆ์ผ์น˜ ๋ถ€๋“ฑ ๋น„๊ต
console.log(2 !== "2"); // true
console.log(2 != "2"); // false

null VS undefined

๋‘˜ ๋‹ค "๊ฐ’์ด ์—†๋‹ค"๋Š” ๊ฒƒ์„ ์˜๋ฏธ

null : ์˜๋„์ ์œผ๋กœ "๊ฐ’์ด ์—†๋‹ค"๋Š” ๊ฒƒ์„ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ undefined : "๊ฐ’์ด ์—†๋‹ค"๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉ

๊ฐ’์ด ์ฃผ์–ด์ง€์ง€ ์•Š์€ ๊ฐ’์€ ๊ธฐ๋ณธ์ ์œผ๋กœ undefined

let sh;
console.log(sh); // undefined
let sh = null;
console.log(sh); // null

๊ฐ์ฒด

๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋Š” delete ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

ํ”„๋กœํผํ‹ฐ ๋„ค์ž„์— ๋„์–ด์“ฐ๊ธฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•˜๊ณ , ๋ฐ˜๋“œ์‹œ ๋”ฐ์˜ดํ‘œ๋ฅผ ๋ถ™์—ฌ์„œ ๋ฌธ์ž์—ด์ด๋ผ๋Š” ๊ฒƒ์„ ๋ช…์‹œํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

let myObejct = {};

myObejct["new property"] = "new value";

console.log(myObject["new property"]);

Date

let today = new Date(2112, 7, 24);
let jaeSangStart = new Date(2109, 6, 1);

function workDayCalc(startDate) {
  let timeDiff = today.getTime() - jaeSangStart.getTime();
  let result = timeDiff / 1000 / 60 / 60 / 24;
  console.log(`์˜ค๋Š˜์€ ์ž…์‚ฌํ•œ ์ง€ ${result + 1}์ผ์งธ ๋˜๋Š” ๋‚  ์ž…๋‹ˆ๋‹ค.`);
}

workDayCalc(jaeSangStart);

splice

arr.splice(์‚ญ์ œํ• index, ์‚ญ์ œํ• ๊ฐœ์ˆ˜, ์ถ”๊ฐ€ํ• ์š”์†Œ, ์ถ”๊ฐ€ํ• ์š”์†Œ, ...);

๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ

๋ฐฐ์—ด์˜ ์ฒซ ์š”์†Œ๋ฅผ ์‚ญ์ œ : shift()

arr.shift();

๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์‚ญ์ œ : pop()

arr.pop();

๋ฐฐ์—ด์˜ ์ฒซ ์š”์†Œ๋กœ ๊ฐ’ ์ถ”๊ฐ€ : unshift(value)

arr.unshift("value");

๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋กœ ๊ฐ’ ์ถ”๊ฐ€ : push(value)

arr.push("value");

๋ฐฐ์—ด์—์„œ ํŠน์ • ๊ฐ’ ์ฐพ๊ธฐ : indexOf()

let brands = ["Google", "Kakao", "Naver", "Kakao"];
console.log(brands.indexOf("Kakao")); // 1

// ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด -1์ด ๋ฆฌํ„ด๋œ๋‹ค.
// ์—ฌ๋Ÿฌ๊ฐœ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ฒ˜์Œ ๋ฐœ๊ฒฌ๋œ ์ธ๋ฑ์Šค๊ฐ€ ๋ฆฌํ„ด๋œ๋‹ค.

๋ฐฐ์—ด์—์„œ ๋’ค์—์„œ ๋ถ€ํ„ฐ ํŠน์ • ๊ฐ’ ์ฐพ๊ธฐ : lastIndexOf()

let brands = ["Google", "Kakao", "Naver", "Kakao"];
console.log(brands.lastIndexOf("Kakao")); // 3

๋ฐฐ์—ด์—์„œ ํŠน์ • ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ : includes

let brands = ["Google", "Kakao", "Naver", "Kakao"];
console.log(brands.includes("Kakao")); // true

๋ฐฐ์—ด ๋’ค์ง‘๊ธฐ : reverse

let brands = ["Google", "Kakao", "Naver", "Kakao"];
brands.reverse();
console.log(brands); // ["Kakao", "Naver", "Kakao", "Google"]

Math

์ ˆ๋Œ“๊ฐ’

Math.abs(x)

์ตœ๋Œ“๊ฐ’

console.log(Math.max(2, -1, 4, 5, 0)); // 5

๋ฐ˜์˜ฌ๋ฆผ

console.log(Math.round(2.3)); // 2
// ์†Œ์ˆ˜์  ๋ถ€๋ถ„์ด 0.5 ์ด์ƒ์ด๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ˆซ๊ฐ’์œผ๋กœ ์˜ฌ๋ผ๊ฐ€๊ณ , ์†Œ์ˆ˜์  ๋ถ€๋ถ„์ด 0.5 ๋ฏธ๋งŒ์ด๋ฉด ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ˆซ๊ฐ’์œผ๋กœ ๋‚ด๋ ค๊ฐ„๋‹ค.

๋ฒ„๋ฆผ๊ณผ ์˜ฌ๋ฆผ

Math.floor(x)์„ ํ•˜๋ฉด x์˜ ๋ฒ„๋ฆผ ๊ฐ’์ด, Math.ceil(x)์„ ํ•˜๋ฉด x์˜ ์˜ฌ๋ฆผ ๊ฐ’์ด ๋ฆฌํ„ด๋œ๋‹ค. ์ด ๊ฒฝ์šฐ, ์†Œ์ˆ˜ ๋ถ€๋ถ„์ด ์–ผ๋งˆ ์ธ์ง€์™€๋Š” ์ƒ๊ด€์—†๋‹ค.

console.log(Math.floor(2.49)); // 2
console.log(Math.floor(2.8)); // 2
console.log(Math.ceil(2.4)); // 3
console.log(Math.ceil(2.8)); // 3

๋‚œ์ˆ˜

Math.random์„ ํ•˜๋ฉด 0 ์ด์ƒ 1 ๋ฏธ๋งŒ์˜ ๊ฐ’์ด ๋žœ๋ค์œผ๋กœ ๋ฆฌํ„ด๋œ๋‹ค.

console.log(Math.random()); // 0.4235243234

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜

let previous = 0;
let current = 1;

for (let i = 1; i <= 50; i++) {
  console.log(current);
  let temp = previous; // previous๋ฅผ ์ž„์‹œ ๋ณด๊ด€์†Œ temp์— ์ €์žฅ
  previous = current;
  current = current + temp;
}

ํŒฉํ† ๋ฆฌ์–ผ

function factorial(n) {
  let result = 1;

  for (let i = 1; i <= n; i++) {
    result = result * i;
  }

  return result;
}

๊ฑฐ์Šค๋ฆ„๋ˆ

function calculateChange(payment, cost) {
  let change = payment - cost; // ๊ฑฐ์Šค๋ฆ„๋ˆ ์ด์•ก

  const fiftyCount = Math.floor(change / 50000);
  change = change - 50000 * fiftyCount;

  const tenCount = Math.floor(change / 10000);
  change = change - 10000 * tenCount;

  const fiveCount = Math.floor(change / 5000);
  change = change - 5000 * fiveCount;

  const oneCount = Math.floor(change / 1000);
  change = change - 1000 * oneCount;

  console.log(`50000์› ์ง€ํ: ${fiftyCount}์žฅ`);
  console.log(`10000์› ์ง€ํ: ${tenCount}์žฅ`);
  console.log(`5000์› ์ง€ํ: ${fiveCount}์žฅ`);
  console.log(`1000์› ์ง€ํ: ${oneCount}์žฅ`);
}

calculateChange(100000, 33000);
console.log("");
calculateChange(500000, 378000);

ํŒฐ๋ฆฐ๋“œ๋กฌ

function isPalindrome(word) {
  for (let i = 0; i < Math.floor(word.length / 2); i++) {
    let left = word[i];
    let right = word[word.length - 1 - i];
    if (left !== right) {
      return false;
    }
  }
  return true;
}

console.log(isPalindrome("racecar"));
console.log(isPalindrome("stars"));
console.log(isPalindrome("๊ธฐ๋Ÿฌ๊ธฐ"));

f