๐Ÿ™ JS ๊ฐ„๋‹จ ๋ช…๋ฃŒํ•œ ๊ธฐ๋ณธ ์ •๋ฆฌ1

KHWยท2021๋…„ 10์›” 6์ผ
0

Javascript ์ง€์‹์Œ“๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
83/95

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€?

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ECMA script๋ฅผ ์ค€์ˆ˜ํ•˜๋ฉด์„œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ณ„๋„๋กœ ์ง€์›ํ•˜๋Š” Web API ๋“ฑ์„ ํฌํ•จํ•œ ๊ฐœ๋…


1. JS ๊ฐœ๋ฐœํ™˜๊ฒฝ

  1. ๋ธŒ๋ผ์šฐ์ € => ๋ Œ๋”๋ง ๋ชฉ์ 
  2. Node.js => ์‹คํ–‰ํ™˜๊ฒฝ ์ œ๊ณต ๋ชฉ์ 
  • ๊ณตํ†ต์  : ECMA script๋ฅผ ๋”ฐ๋ฅธ๋‹ค.
  • ์ฐจ์ด์  : ๋ธŒ๋ผ์šฐ์ €๋Š” Web API๋ฅผ Node.js๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ œ๊ณต

2. ๋ณ€์ˆ˜

  1. ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„
  2. ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฆ„ (์‹๋ณ„์ž์˜ ์ด๋ฆ„)

๋ณ€์ˆ˜ ์„ ์–ธ

  • var a
  1. ์„ ์–ธ ๋‹จ๊ณ„
  2. ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„

๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€๋ถ„์€ JS ๋™์ž‘์— ์žˆ์–ด์„œ ๋Ÿฐํƒ€์ž„ ์‹คํ–‰ ์ „์ธ ์†Œ์Šค์ฝ”๋“œ ํ‰๊ฐ€ ๊ณผ์ •์—์„œ ์‹คํ–‰๋˜์–ด ํ•œ์ค„์”ฉ ํ•ด์„ํ•˜๋Š” ๋Ÿฐํƒ€์ž„๊ณผ ๋‹ค๋ฅด๊ฒŒ ํ•œ๋ฒˆ์— ์œ„์— ์„ ์–ธ๋œ๋‹ค.


๋ณ€์ˆ˜ ํ• ๋‹น

  • a = 10

์‹๋ณ„์ž๋ž€?

์–ด๋–ค ๊ฐ’์„ ๊ตฌ๋ณ„ํ•ด์„œ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์ด๋ฆ„

3. ์ปดํŒŒ์ผ๋Ÿฌ ์–ธ์–ด / ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด

์ปดํŒŒ์ผ๋Ÿฌ์ธํ„ฐํ”„๋ฆฌํ„ฐ
์ฝ”๋“œ ์‹คํ–‰ ์ „ ์†Œ์Šค์ฝ”๋“œ ์ „์ฒด๋ฅผ ๋ณ€ํ™˜ ํ›„ ์‹คํ–‰๋Ÿฐํƒ€์ž„์— ํ•œ์ค„ ์”ฉ ์ฝ”๋“œ ๋ณ€ํ™˜ ํ›„ ์‹คํ–‰
์‹คํ–‰ ํŒŒ์ผ ์ƒ์„ฑ์‹คํ–‰ ํŒŒ์ผ ์ƒ์„ฑX
์ปดํŒŒ์ผ ๋‹จ๊ณ„ / ์‹คํ–‰ ๋‹จ๊ณ„ ๋ถ„๋ฆฌ๋ถ„๋ฆฌ๋˜์ง€์•Š์•„ ํ•œ์ค„์”ฉ ๋ณ€ํ™˜ ํ›„ ์‹คํ–‰
๋ถ„๋ฆฌ๋กœ ์ธํ•œ ์ฝ”๋“œ ์‹คํ–‰์†๋„ ๋น ๋ฅด๋‹ค์™”๋‹ค๊ฐ”๋‹ค ๋ฐ˜๋ณต ์ˆ˜ํ–‰์œผ๋กœ ์ฝ”๋“œ ์‹คํ–‰ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋‹ค

4. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ๋‹จ๊ณ„

1 ๋‹จ๊ณ„: ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์ƒ์„ฑํ•˜๊ณ , ๋ณ€์ˆ˜ ๋“ฑ์„ ๋“ฑ๋กํ•˜๋Š” ๋‹จ๊ณ„
(์†Œ์Šค์ฝ”๋“œ ํ‰๊ฐ€ ๊ณผ์ •)
2 ๋‹จ๊ณ„: ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„
(๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ)


5. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น๊ณผ ํ•ด์ œ

์›์‹œํƒ€์ž…์˜ ๊ฒฝ์šฐ ์žฌํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ฐ’์€ ์ด์ „ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„๊ณณ์ด ๋ฐ”๋€Œ์ง€์•Š๊ณ  ์ƒˆ๋กœ์šด ์ฃผ์†Œ์˜ ์œ„์น˜์— ์ƒ๊ธด๋‹ค.


๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ

ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฒ€์‚ฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜์ง€์•Š๋Š”(์–ด๋–ค ์‹๋ณ„์ž๋„ ์ฐธ์กฐํ•˜์ง€์•Š๋Š”) ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

  • ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด์— ์กด์žฌํ•œ๋‹ค.

๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด / ์–ธ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด

  1. ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด : ๋ฉ”๋ชจ๋ฆฌ์˜ ํ• ๋‹น ๋ฐ ํ•ด์ œ๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ œ์–ดํ•˜์ง€์•Š์Œ => JS
  2. ์–ธ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด : ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น / ํ•ด์ œ => C์–ธ์–ด
  • ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด๋Š” ๋”ฐ๋กœ ๊ฐ’์„ ํ•ด์ œํ•  ํ•„์š”๊ฐ€ ์—†์–ด์„œ ๋น„๊ต์  ํŽธํ•˜๋‹ค
  • ์–ธ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด๋Š” ์„ฑ๋Šฅ๋ฉด์—์„œ ํ•„์š”์—†๋Š” ๋ถ€๋ถ„์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ”๋กœ ํ•ด์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋น„๊ต์  ์„ฑ๋Šฅ๋ฉด์—์„œ ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด๋ณด๋‹ค ์ข‹๋‹ค

6. ๊ฐ์ฒด

  1. ํ”„๋กœํผํ‹ฐ : ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’
    1) ํ”„๋กœํผํ‹ฐ ํ‚ค
    2) ํ”„๋กœํผํ‹ฐ ๊ฐ’
  2. ๋ฉ”์„œ๋“œ : ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๋™์ž‘

๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•

  1. ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด
  2. Object ์ƒ์„ฑ์ž ํ•จ์ˆ˜
  3. ์ƒ์„ฑ์ž ํ•จ์ˆ˜
  4. Object.create ๋ฉ”์„œ๋“œ
  5. ํด๋ž˜์Šค
const user1 = {
  name: "๋ณด๋ผ",
  isAdmin: false,
};

function User2(name) {
  this.name = name;
  this.isAdmin = false;
}

let user2 = new User2("๋ณด๋ผ");

let user3 = new Object();
user3.name = "๋ณด๋ผ";
user3.isAdmin = false;

let user4 = Object.create(null);
user4.name = "๋ณด๋ผ";
user4.isAdmin = false;

class User5 {
  constructor(name, isAdmin) {
    this.name = name;
    this.isAdmin = isAdmin;
  }
}

const user5 = new User5("๋ณด๋ผ", false);

console.log(user1);
console.log(user2);
console.log(user3);
console.log(user4);
console.log(user5);

๋ชจ๋‘ ๊ฐ™์€ name๊ณผ isAdmin์„ ํฌํ•จํ•œ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค.

ํ”„๋กœํผํ‹ฐ ํ‚ค์˜ ํŠน์ง•

์‹๋ณ„์ž ๋„ค์ด๋ฐ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฉด์€ ๋”ฐ์˜ดํ‘œ๊ฐ€ ํ•„์š”์—†์œผ๋‚˜
์ด๋ฅผ ๋”ฐ๋ฅด์ง€์•Š์œผ๋ฉด ๋”ฐ์˜ดํ‘œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค ex)last-name

ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ

  1. ๋งˆ์นจํ‘œ ํ‘œ๊ธฐ๋ฒ• (person.name)
  2. ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ• (person['name'])

๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์— ๋”ฐ๋ฅด๋Š” ๊ฒฐ๊ณผ

  • person.last-name
  1. Node.js : name์ด ์–ด๋””์—๋„ ์—†์–ด์„œ ReferenceError
  2. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ : name์ด๋ผ๋Š” ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ์•”๋ฌต์ ์œผ๋กœ ์กด์žฌํ•˜์—ฌ NaN

ES6 ํ™•์žฅ๊ธฐ๋Šฅ

let x = 1,  y = 2;

const obj = { x, y }	// {x:x,y:y} => {x:1,y:2}

console.log(obj); // {x:1,y:2}
  • ๋ฉ”์„œ๋“œ๋Š” ํ™”์‚ดํ‘œํ•จ์ˆ˜ ์‚ฌ์šฉ์„ ํ•˜์ง€ ์•Š๊ธธ ๋ฐ”๋žŒ
let obj = {
  name: "Lee",
  sayHi: function () {
    console.log(this, "hi");
  },
  sayHi1: () => {
    console.log(this, "hi1");
  },
  sayHi2() {
    console.log(this, "hi2");
  },
};

obj.sayHi();
obj.sayHi1();
obj.sayHi2();

ํ™”์‚ดํ‘œํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ sayHi1()๋งŒ ์ •์ƒ์ ์ธ obj this๋ฅผ ๊ฐ€๋ฅดํ‚ค์ง€ ์•Š๋Š”๋‹ค

7. ์›์‹œ ๊ฐ’ / ๊ฐ์ฒด ๊ฐ’

์ฐจ์ด์ 

  1. ๋ถˆ๋ณ€์„ฑ ( ๋ถˆ๋ณ€์„ฑ O / ๋ถˆ๋ณ€์„ฑ X )
  2. ๋ณ€์ˆ˜์˜ ์ €์žฅ ( ์‹ค์ œ๊ฐ’ / ์ฐธ์กฐ ๊ฐ’ )
  3. ๋ณต์‚ฌ ( ์›์‹œ ๊ฐ’์˜ ๋ณต์‚ฌ / ์ฐธ์กฐ ๊ฐ’์˜ ๋ณต์‚ฌ )

์˜๋ฏธํ•ด์„

์›์‹œ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค
=> ๋ณ€์ˆ˜ ๊ฐ’์€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค ( = ๋ณ€์ˆ˜๊ฐ’์€ ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค )

์œ ์‚ฌ๋ฐฐ์—ด ๊ฐ์ฒด

๋ฌธ์ž์—ด์€ ๋ฐฐ์—ดํ˜•ํƒœ ์ ‘๊ทผ์€ ๊ฐ€๋Šฅํ•˜๋‹ค
๋ฌธ์ž์—ด์€ ๋ฐฐ์—ดํ˜•ํƒœ๋กœ ๋ฌธ์ž๋ณ€๊ฒฝ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค
๋ฌธ์ž ๋ณ€๊ฒฝ ์‹œ์—๋Š” ์ƒˆ๋กœ์šด ๋ฌธ์ž(์—ด)๋กœ ์žฌํ• ๋‹น ํ•„์š”ํ•˜๋‹ค

๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ / ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ

์‚ฌ์‹ค์€ ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—๋Š” ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ ๋ฐ–์— ์—†๋‹ค
๋‹จ์ง€, (์›์‹œ) ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ์ธ์ง€ (์ฐธ์กฐ) ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ์ธ์ง€๊ฐ€ ์ค‘์š”ํ•  ๋ฟ์ด๋‹ค.
์ฆ‰, ์ •๋ฆฌํ•˜์ž๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํ‰์†Œ์— ์“ฐ๋˜ ๊ฐ’์˜ ์ „๋‹ฌ๊ณผ ์ฐธ์กฐ์˜ ์ „๋‹ฌ์€
์‚ฌ์‹ค ์›์‹œ๊ฐ’์˜ ์ „๋‹ฌ๊ณผ ์ฐธ์กฐ๊ฐ’์˜ ์ „๋‹ฌ๋กœ ์ดํ•ดํ•˜๊ณ 
์‹ค์ œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ๋งŒ์ด ์กด์žฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ž

=== ๋น„๊ต์—ฐ์‚ฐ

  1. ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•œ ๋ณ€์ˆ˜ ๋น„๊ต : ์ฐธ์กฐ ๊ฐ’์„ ๋น„๊ต
  2. ์›์‹œ ๊ฐ’์„ ํ• ๋‹นํ•œ ๋ณ€์ˆ˜ : ์›์‹œ ๊ฐ’์„ ๋น„๊ต
let p = { name : 'L'}
let q = { name : 'L'}
console.log(p === q);		// 1. false
console.log(p.name === q.name);	// 2. true

์ถœ์ฒ˜

JS์‹คํ–‰๋‹จ๊ณ„

profile
๋‚˜์˜ ํ•˜๋ฃจ๋ฅผ ๊ฐ€๋Šฅํ•œ ๊ธฐ์–ตํ•˜๊ณ  ์ฆ๊ธฐ๊ณ  ํ›„ํšŒํ•˜์ง€๋ง์ž

0๊ฐœ์˜ ๋Œ“๊ธ€