๐Ÿ‘จโ€๐Ÿ’ป Seungineer's GitHub Contribution

๐Ÿ› ๏ธ Tool/React

๋ชจ๋˜ ์ž์Šค๋กœ ๋ฐฐ์šฐ๋Š” ๋ฆฌ์•กํŠธ ์ž…๋ฌธ2 - 2์žฅ ๋งˆ๋ฌด๋ฆฌ

seungineer = seungwoo + engineer 2024. 5. 24. 04:07

2.1 const, let์„ ์ด์šฉํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ

var๋ฅผ ์ด์šฉํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ์˜ ๋ฌธ์ œ์ 

- ๋ฎ์–ด์“ฐ๊ธฐ ๊ฐ€๋Šฅ : ํ•œ ๋ฒˆ ์ •์˜ํ•œ ๋ณ€์ˆ˜์— ๋‹ค๋ฅธ ๊ฐ’์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ์Œ(์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ๋ฎ์–ด์จ์งˆ ์ˆ˜ ์žˆ๊ธฐ์— ๋ฌด์กฐ๊ฑด ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Œ)

- ์žฌ์„ ์–ธ ๊ฐ€๋Šฅ : ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ˆœ์„œ์— ๋”ฐ๋ผ ์–ด๋А ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๋Š”์ง€ ํ•ด์„ํ•˜๊ธฐ ์–ด๋ ค์›€

(var๊ฐ€ '๋ณ€์ˆ˜'๋ผ๋Š” ๋œป์ด๊ธฐ์— ๋‘˜ ๋‹ค ๋ณ€๋™ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐ, var๋Š” ์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)

 

let์„ ์ด์šฉํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ

- ๋ฎ์–ด ์“ฐ๊ธฐ ๊ฐ€๋Šฅ

- ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ

(let์ด 'OO์ด๋ผ ํ•˜์ž~'๋ผ๋Š” ๋œป์ด๊ธฐ์— ์„ ์–ธ์€ ํ•œ ๋ฒˆ ํ–ˆ๊ณ , ๋ฎ์–ด์“ฐ๊ธฐ๋Š” ๊ฐ€๋Šฅํ•œ var๊ฐ€ ์„ ์–ธ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐ)

let v1 = 3;
console.log(v1) // 3

v1 = "๋ฌธ์ž์—ด๋กœ ๋ฎ์–ด์จ๋ฒ„๋ฆฌ๊ธฐ~~";
console.log(v1) // ๋ฌธ์ž์—ด๋กœ ๋ฎ์–ด์จ๋ฒ„๋ฆฌ๊ธฐ~~

type์ด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฎ์–ด์“ฐ๊ธฐ ๊ฐ€๋Šฅ

SyntaxError: Identifier 'v1' has already been declared

์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ

const๋ฅผ ์ด์šฉํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ : ๊ฐ€์žฅ ์—„๊ฒฉํ•œ ์„ ์–ธ

- ๋ฎ์–ด ์“ฐ๊ธฐ ๋ถˆ๊ฐ€๋Šฅ

- ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ

(const๊ฐ€ '๋ถˆ๋ณ€์˜'๋ผ๋Š” ๋œป์ด๊ธฐ์— ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐ)

const v1 = 3;
console.log(v1)

v1 = "๋ฌธ์ž์—ด๋กœ ๋ฎ์–ด์จ๋ฒ„๋ฆฌ๊ธฐ~~"; //TypeError: Assignment to constant variable.
console.log(v1) ;

const๋กœ ์ •์˜ํ•œ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ?

- primitive type

  • ๋…ผ๋ฆฟ๊ฐ’(Boolean): true/false
  • ์ˆ˜์น˜(Number): 1, 2.5, ...
  • ํฐ ์ˆ˜์น˜(BigInt): 93248230948n
  • ๋ฌธ์ž์—ด(String): "javascript", 'java'
  • undefiend: ๋ฏธ์ •์˜
  • null: ๊ฐ’ ์—†์Œ
  • Symbol: ์œ ์ผํ•˜๋ฉฐ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” ๊ฐ’

- object type

  • ๊ฐ์ฒด
  • ๋ฐฐ์—ด
  • ํ•จ์ˆ˜
  • ๋“ฑ primitive type ์ด์™ธ์˜ ๊ฒƒ

๊ฐ์ฒด Case - ๊ธฐ๋ณธ์ ์œผ๋กœ const ์„ ์–ธ

// ๊ฐ์ฒด ์ •์˜
const obj = {
    name: "์Šน์ง€๋‹ˆ์–ด",
    age: 28,
};
// ์†์„ฑ๊ฐ’ ๋ณ€๊ฒฝ
obj.age = 20
console.log(obj) //{ name: '์Šน์ง€๋‹ˆ์–ด', age: 20 }
// ์†์„ฑ๊ฐ’ ์ถ”๊ฐ€
obj.address = "jungle"
console.log(obj) //{ name: '์Šน์ง€๋‹ˆ์–ด', age: 20, address: 'jungle' }
๋ฐฐ์—ด Case - ๊ธฐ๋ณธ์ ์œผ๋กœ const ์„ ์–ธ
// ๋ฐฐ์—ด ์ •์˜
const arr = ["dog", "cat"];
console.log(arr) // [ 'dog', 'cat' ]
// ์ฒซ ๋ฒˆ์งธ ๊ฐ’ ๋ณ€๊ฒฝ
arr[0] = "puppy";
console.log(arr) // [ 'puppy', 'cat' ]
// ๊ฐ’ ์ถ”๊ฐ€
arr.push("monkey");
console.log(arr) // [ 'puppy', 'cat', 'monkey' ]

๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์—์„œ ์ด์šฉํ•˜๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ

var, let, const ์ค‘ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์—์„œ๋Š” const๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ์ด์šฉํ•œ๋‹ค.

๊ฐ์ฒด, ๋ฐฐ์—ด์€ const๋กœ ์„ ์–ธํ•˜๋”๋ผ๋„ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์—์„œ ๋™์ ์œผ๋กœ ๋ฐ”๋€Œ๋Š” ๊ฐ’์€ 'State(4.6์ ˆ)'๋ผ๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…์œผ๋กœ ๊ฐ’์„ ๊ด€๋ฆฌํ•œ๋‹ค.

๐Ÿ’ก๊ทธ๋ž˜์„œ ๋ฆฌ์•กํŠธ์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ const๋ฅผ ์ด์šฉํ•˜๊ณ , State๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ์ฒ˜๋ฆฌ ๋„์ค‘ ๊ฐ’์„ ๋ฎ์–ด์จ์•ผ ํ•˜๋Š” ๋ณ€์ˆ˜๋งŒ let์œผ๋กœ ์„ ์–ธํ•œ๋‹ค.

2.2 ํ…œํ”Œ๋ฆฟ ๋ฌธ์ž์—ด(ES2015 ์ดํ›„)

// ์ด๋ฆ„ ์ €์žฅ ๋ณ€์ˆ˜
let name2 = "์Šน์ง€๋‹ˆ์–ด";
// ๋‚˜์ด ์ €์žฅ ๋ณ€์ˆ˜
let age = 28;
// ๋‚˜๋Š” '๋‚˜์ด'์‚ด '์ด๋ฆ„'์ž…๋‹ˆ๋‹ค. ์ถœ๋ ฅ
console.log(`๋‚˜๋Š” ${age}์‚ด ${name2}์ž…๋‹ˆ๋‹ค`); // ๋‚˜๋Š” 28์‚ด ์Šน์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค
console.log("๋‚˜๋Š” " + age + "์‚ด " + name2 + "์ž…๋‹ˆ๋‹ค"); // ๋‚˜๋Š” 28์‚ด ์Šน์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค

๋ฐฑํ‹ฑ(`) ๋ฌธ์ž์—ด ์•ˆ์— ${ } ํ˜•ํƒœ์˜ ์•ˆ ์ชฝ์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ${name}์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ „๊ฐœํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ…œํ”Œ๋ฆฟ ๋ฌธ์ž์—ด์ด๋ผ๊ณ  ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ž์—ด๊ณผ ๋ณ€์ˆ˜๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•(๋งˆ์ง€๋ง‰ log)๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

2.3 ํ™”์‚ดํ‘œ ํ•จ์ˆ˜arrow function ( ) => { } (EX2015 ์ดํ›„)

์ƒˆ๋กœ์šด ํ•จ์ˆ˜ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๊ธฐ์กด๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•จ์ˆ˜๋ฅผ ๊ธฐ์ˆ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด ํ•จ์ˆ˜

// ๊ธฐ์กด ํ•จ์ˆ˜ ์ •์˜
function func1(value) {
    return value;
}

console.log(func1("์ธํ’‹ value")); // ์ธํ’‹ value

// ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋กœ ์ •์˜
const func2 = function (value){
    return value;
}
console.log(func2("ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋กœ ์ •์˜")); // ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋กœ ์ •์˜

ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์•˜๋‹ค.

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

// ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ •์˜
const func1 = value => {
    return value;
}
// ์‹คํ–‰ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
console.log(func1("๋ฐธ๋ฅ˜")); // ๋ฐธ๋ฅ˜

// ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ •์˜2
const func2 = (val1, val2) => {
    return val1 + val2;
}
// ์‹คํ–‰ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
console.log(func2("๋ฐธ๋ฅ˜1", "๋ฐธ๋ฅ˜2")); // ๋ฐธ๋ฅ˜1๋ฐธ๋ฅ˜2

// ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ •์˜3
const func3 = (val1, val2) => val1 + val2
// ์‹คํ–‰ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
console.log(func3("๋ฐธ๋ฅ˜1", "๋ฐธ๋ฅ˜2")); // ๋ฐธ๋ฅ˜1๋ฐธ๋ฅ˜2
  1. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ •์˜1
    • value๊ฐ€ 'ํ•œ ๊ฐœ'์ธ ๊ฒฝ์šฐ ์†Œ๊ด„ํ˜ธ ์—†์ด ์ž‘์„ฑ ๊ฐ€๋Šฅ!
  2. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ •์˜ 2
    • value ์š”์†Œ๊ฐ€ '๋‘ ๊ฐœ' ์ด์ƒ์ธ ๊ฒฝ์šฐ ์†Œ๊ด„ํ˜ธ ์ž‘์„ฑ ํ•„์š”
  3. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ •์˜ 3
    • ์ฆ‰์‹œ return ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  4. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ •์˜ 4

๋ฐ˜ํ™˜ ๊ฐ’์ด ์—ฌ๋Ÿฌ ํ–‰์ผ ๊ฒฝ์šฐ ( )๋กœ ๊ฐ์‹ผ ๋’ค ๋‹จ์ผ ํ–‰๊ณผ ๊ฐ™์ด ๋ชจ์•„์„œ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

// ๊ด„ํ˜ธ๋กœ ๊ฐ์‹ธ์„œ ๋ชจ์€ ๋’ค ์ƒ๋žตํ•ด์„œ ๋ฐ˜ํ™˜
const func4 = (val1, val2) => (
    {
        name: val1,
        age: val2,
    }
)
// ์‹คํ–‰ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
console.log(func4("seungineer", 280)); // { name: 'seungineer', age: 280 }

 

์ด ๋ฐฉ๋ฒ•์€ ๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ์ฆ‰์‹œ ์˜๋ฏธ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ์˜๋ฏธ๋ฅผ ์ตํ˜€๋‘๋Š” ๊ฒŒ ์ข‹๋‹ค.

2.4 ๋ถ„ํ•  ๋Œ€์ž… { } [ ]

๋ถ„ํ•  ๋Œ€์ž…์ด๋ž€, ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด๋กœ๋ถ€ํ„ฐ ๊ฐ’์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ถ„ํ•  ๋Œ€์ž…์„ ํ™œ์šฉํ•˜์ง€ ์•Š์€ case๋ฅผ ๋จผ์ € ๋ณด๋ฉด์„œ ์•Œ์•„๋ณธ๋‹ค.

const myProfile = {
    name: "seungineer",
    age: 24,
}
const message = `์ €์˜ ๋‹‰๋„ค์ž„์€ ${myProfile.name}์ด๊ณ , ${myProfile.age}์‚ด์ž…๋‹ˆ๋‹ค.`
console.log(message) // ์ €์˜ ๋‹‰๋„ค์ž„์€ seungineer์ด๊ณ , 24์‚ด์ž…๋‹ˆ๋‹ค.

๋ฐฑํ‹ฑ ๋‚ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณด๋ฉด ๊ฐ์ฒด์˜ name๊ณผ age๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ '๊ฐ์ฒด๋ช….์†์„ฑ๋ช…' ํ˜•ํƒœ๋กœ ๊ฐ์ฒด๋ช…์„ ๋ฐ˜๋ณตํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด ๋ณ€์ˆ˜๋ช…์ด ๋” ๊ธธ์–ด์ง€๊ณ , ์ž…๋ ฅํ•ด์•ผ ํ•˜๋Š” ๊ณณ์ด ๋งŽ์•„์งˆ ๊ฒฝ์šฐ ๊ฐ€๋…์„ฑ ๋ฐ ์กฐ์ž‘์„ฑ ์ธก๋ฉด์—์„œ ๋–จ์–ด์งˆ ๊ฒƒ์ด๋‹ค.

๊ฐ์ฒด ๋ถ„ํ•  ๋Œ€์ž…

const myProfile = {
    name: "seungineer",
    age: 24,
    address: "jungle",
}
const {age, name} = myProfile; // ๋ถ„ํ•  ๋Œ€์ž…
const message = `์ €์˜ ๋‹‰๋„ค์ž„์€ ${name}์ด๊ณ , ${age}์‚ด์ž…๋‹ˆ๋‹ค.`
console.log(message) // ์ €์˜ ๋‹‰๋„ค์ž„์€ seungineer์ด๊ณ , 24์‚ด์ž…๋‹ˆ๋‹ค.

์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์ด '๋ถ„ํ•  ๋Œ€์ž…'์„ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ์–ด์„œ ์ถ”์ถœ ๊ฐ€๋Šฅ
  • ๊ฐ์ฒด์˜ ์ผ๋ถ€ ์†์„ฑ๋งŒ ์ถ”์ถœ ๊ฐ€๋Šฅ
const myProfile = {
    name: "seungineer",
    age: 24,
    address: "jungle",
}
// ์ฝœ๋ก ์œผ๋กœ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋ช…์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ
const {age: newAge, name: newName} = myProfile;
const message = `์ €์˜ ๋‹‰๋„ค์ž„์€ ${newName}์ด๊ณ , ${newAge}์‚ด์ž…๋‹ˆ๋‹ค.`
console.log(message) // ์ €์˜ ๋‹‰๋„ค์ž„์€ seungineer์ด๊ณ , 24์‚ด์ž…๋‹ˆ๋‹ค.

์ถ”์ถœํ•œ ์†์„ฑ์— ๋ณ„๋ช…์„ ๋ถ™์ด๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด :(์ฝœ๋ก )์„ ์ด์šฉํ•ด์„œ ํ•ด๋‹น ๋ณ€์ˆ˜๋ช…์œผ๋กœ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฐฐ์—ด ๋ถ„ํ•  ๋Œ€์ž…

const myProfile = ["seungineer", 28]

const message = `์ €์˜ ๋‹‰๋„ค์ž„์€ ${myProfile[0]}์ด๊ณ , ${myProfile[1]}์‚ด์ž…๋‹ˆ๋‹ค.`
console.log(message) // ์ €์˜ ๋‹‰๋„ค์ž„์€ seungineer์ด๊ณ , 28์‚ด์ž…๋‹ˆ๋‹ค.

myProfile์ด๋ผ๊ณ  ํ•˜๋Š” ๋ฐฐ์—ด์— index๋กœ ์ ‘๊ทผํ•ด์„œ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ํ™œ์šฉํ•˜๋Š” ์˜ˆ์ด๋‹ค. ์—ฌ๊ธฐ์— ๋ถ„ํ•  ๋Œ€์ž…์„ ์ด์šฉํ•ด ๋™์ผํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ๋‹ค.

const myProfile = ["seungineer", 28]
const [newName, newAge] = myProfile;

const message = `์ €์˜ ๋‹‰๋„ค์ž„์€ ${newName}์ด๊ณ , ${newAge}์‚ด์ž…๋‹ˆ๋‹ค.`
console.log(message) // ์ €์˜ ๋‹‰๋„ค์ž„์€ seungineer์ด๊ณ , 28์‚ด์ž…๋‹ˆ๋‹ค.

๋ถ„ํ•  ๋Œ€์ž… ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด myProfile ๊ฐ์ฒด ๋‚ด์˜ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ํ• ๋‹น๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด์™€ ๋‹ฌ๋ฆฌ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ง์ ‘ ์„ค์ •ํ•œ ๋ณ€์ˆ˜๋ช…(newName, newAge)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธ๋ฑ์Šค ์ค‘๊ฐ„๊นŒ์ง€๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ์ดํ›„ ์š”์†Œ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋ฆฌ์•กํŠธ์— ๋งค์šฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ๊ผญ ๊ธฐ์–ตํ•  ๊ฒƒ!

2.5 ๋””ํดํŠธ๊ฐ’=

๋””ํดํŠธ๊ฐ’์€ 'ํ•จ์ˆ˜์˜ ์ธ์ˆ˜'๋‚˜ '๊ฐ์ฒด๋ฅผ ๋ถ„ํ•  ๋Œ€์ž…'ํ•  ๊ฒฝ์šฐ ์„ค์ •ํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ์ดˆ๊นƒ๊ฐ’์œผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด ๋”์šฑ ์•ˆ์ „ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์ธ์ˆ˜์˜ ๋””ํดํŠธ๊ฐ’

const sayHello = (name = "Guest") => console.log(`์•ˆ๋…•ํ•˜์„ธ์š”. ${name}๋‹˜.`)

sayHello() // ์•ˆ๋…•ํ•˜์„ธ์š”. Guest๋‹˜.

์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์–ด๋–ค ์ธ์ž๋„ ๋“ค์–ด๊ฐ€์ง€ ์•Š์•˜์„ ๋•Œ์˜ name ๋ณ€์ˆ˜์—๋Š” "Guest"๋กœ ํ• ๋‹น๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ ์œ„ ์ฒ˜๋ฆด๋ฅด ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ name log ์‹œ undefiened๋กœ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ๋‹ค.

๊ฐ์ฒด ๋ถ„ํ•  ๋Œ€์ž… ์‹œ์˜ ๋””ํดํŠธ๊ฐ’

const myProfile = {
    age: 28,
}

const {name = "default"} = myProfile;
console.log(`${name}`);

์ธ์ˆ˜ case์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณ€์ˆ˜๋ช… ๋’ค์— '='๋กœ ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด(์˜ˆ์‹œ ์ฝ”๋“œ๋Š” 'default'), ๋””ํดํŠธ๊ฐ’์ด log๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ธ์ˆ˜ ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ์ด๋Š” ๋ฆฌ์•กํŠธ์—์„œ๋„ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์ด๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ์ˆ™์ง€ํ•ด์•ผ ํ•จ.

2.6 ์Šคํ”„๋ ˆ๋“œ ๊ตฌ๋ฌธ ...

์Šคํ”„๋ ˆ๋“œ ๊ตฌ๋ฌธ์€ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์— ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค.

์š”์†Œ ์ „๊ฐœ

const arr1 = [1, 2]
console.log(arr1) // [1, 2]
console.log(...arr1) // 1 2

๋‚ด๋ถ€ ์š”์†Œ์˜ ์ˆœ์ฐจ์  ์ „๊ฐœ

const arr = [1, 2];
const func1 = (val1, val2) => val1 + val2;

console.log(func1(arr[0], arr[1])); // 3
console.log(func1(...arr)); // 3

์š”์†Œ ์ „๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์ด ํ•œ ๋ฒˆ์— ์ธ์ž๋ฅผ ์ „๊ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

์š”์†Œ ๋ชจ์œผ๊ธฐ

์Šคํ”„๋ ˆ๋“œ ๊ตฌ๋ฌธ์€ ์š”์†Œ๋ฅผ ๋ชจ์œผ๋Š” ๋ฐ๋„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

const arr1 = [1, 2, 3, 4, 5, 6]
const [num1, num2, ...left] = arr1

console.log(num1) // 1
console.log(num2) // 2
console.log(left) // [ 3, 4, 5, 6 ] (์š”์†Œ ๋ชจ์œผ๊ธฐ)
console.log(arr1) // [ 1, 2, 3, 4, 5, 6 ]

์š”์†Œ ๋ณต์‚ฌ์™€ ๊ฒฐํ•ฉ

const arrA = [1, 2, 3, 4]
const arrB = [5, 6, 7, 8]

const arrAB = [...arrA, ...arrB]
console.log(arrAB) // [1, 2, 3, 4, 5, 6, 7, 8]

const arrApB = arrA + arrB
console.log(arrApB) // 1,2,3,45,6,7,8
console.log(arrApB[0]) // 1
console.log(arrApB[1]) // ,
console.log(arrApB[2]) // 2
console.log(arrApB[3]) // ,

์Šคํ”„๋ ˆ๋“œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ arrAB์— ์š”์†Œ๋ฅผ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋‘ ๋ฐฐ์—ด์„ ๋”ํ•  ๊ฒฝ์šฐ ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ฐ๊ฐ์˜ ๋ฐฐ์—ด์„ ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

const obj1 = {
    val1: 10,
    val2: 20,
};
const obj2 = {
    val3: 30,
    val4: 40,
};
const obj11 = {...obj1}
obj1obj2 = {...obj1, ...obj2};
console.log(obj11) // { val1: 10, val2: 20 }
console.log(obj1obj2) // { val1: 10, val2: 20, val3: 30, val4: 40 }

์œ„ ์ฝ”๋“œ์™€ ๊ฐ™์ด ์Šคํ”„๋ ˆ๋“œ ๊ตฌ๋ฌธ์„ ๊ฐ์ฒด์— ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, ๋“ฑํ˜ธ(=)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์€ ์•ˆ ๋ ๊นŒ? ๋“ฑํ˜ธ๋กœ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒฝ์šฐ '์ฐธ์กฐ๊ฐ’ ์—ญ์‹œ ์ƒ์†'๋˜๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„ํ•œ ๋ฐ”์™€ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

// ๋“ฑํ˜ธ๋ฅผ ์ด์šฉํ•œ ๋ณต์‚ฌ ์‹œ
const obj1 = {
    val1: 10,
    val2: 20,
};
const obj11 = obj1
obj11.val2 = 200;
console.log(obj11) // { val1: 10, val2: 200 }
console.log(obj1) // { val1: 10, val2: 200 }

2.7 ๊ฐ์ฒด ์ƒ๋žต ํ‘œ๊ธฐ๋ฒ•

๊ฐ์ฒด ๊ธฐ์ˆ  ๋ฐฉ๋ฒ• ์ค‘ ์‡ผํŠธํ•ธ๋“œ(์ƒ๋žตํ‘œํ˜„, shorthand)๊ฐ€ ์žˆ๋‹ค. '๊ฐ์ฒด์˜ ์†์„ฑ๋ช…'๊ณผ '์„ค์ •ํ•  ๋ณ€์ˆ˜๋ช…'์ด ๊ฐ™์„ ๋•Œ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค.

const name = "seungineer";
const age = 280;

const user = {
    name: name,
    age: age,
}

const user2 = {
    name,
    age,
}
console.log(user); // { name: 'seungineer', age: 280 }
console.log(user2); // { name: 'seungineer', age: 280 }

์œ„ ์ฝ”๋“œ์—์„œ user1์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ํ‘œ์ค€์ ์ธ ์ž‘์„ฑ๋ฒ•์ด๋ฉฐ, user2์˜ ๊ฒฝ์šฐ '๊ฐ์ฒด์˜ ์†์„ฑ๋ช…'๊ณผ '์„ค์ •ํ•  ๋ณ€์ˆ˜๋ช…'์ด ๊ฐ™์œผ๋ฏ€๋กœ ์ƒ๋žตํ•œ ๊ฒฝ์šฐ์ด๋‹ค.

2.8 map, filter

๋ฐฐ์—ด ์ฒ˜๋ฆฌ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

๊ธฐ์กด for๋ฌธ

const nameArr = ["seungineer", "์Šน์ง€๋‹ˆ์–ด"]

for (let idx = 0; idx < nameArr.length; idx++) {
    console.log(nameArr[idx])
}
// seungineer
// ์Šน์ง€๋‹ˆ์–ด

๋ฐฐ์—ด์˜ ์š”์†Œ ์ˆ˜๋งŒํผ ๋ฃจํ”„ ์ฒ˜๋ฆฌ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๊ตฌ๋ฌธ์ด ๋‹ค์†Œ ๋ณต์žกํ•˜๊ณ  ์ฝ”๋“œ ์–‘๋„ ๋Š˜์–ด๋‚  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

map ํ•จ์ˆ˜ ์ด์šฉ ๋ฐฉ๋ฒ•

map ํ•จ์ˆ˜์—์„œ๋Š” ๋ฐฐ์—ด์„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

// ๋ฐฐ์—ด ์ •์˜
const nameArr = ["seungineer", "์Šน์ง€๋‹ˆ์–ด"];

// map์„ ์ด์šฉํ•œ ๋ฐฐ์—ด ์ฒ˜๋ฆฌ
const nameArr2 = nameArr.map((name) => {
    console.log(name)
});
const testArr = [1, 2, 3]
const mappedArr = testArr.map(()=>{})
console.log(mappedArr) // [ undefined, undefined, undefined ]

const testArr2 = [1, 2, 3]
const mappedArr2 = testArr.map((val)=>{
    val = 1;
    return val})
console.log(mappedArr2) // [ 1, 1, 1 ]

testArr.map(()=>{}) ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•˜๋ฉด undefiend๋กœ testArr์˜ ์š”์†Œ ์ˆ˜ ๋งŒํผ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ()์˜ ๋ณ€์ˆ˜๋กœ ํ•˜๋‚˜์”ฉ ์ ‘๊ทผํ•˜์—ฌ {}๊ฐ€ ์‹คํ–‰๋˜๋ฉฐ ๋ฐฐ์—ด๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

mappedArr2 ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์ด๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

// for๋ฌธ ์—†์ด ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ ์ˆœ์ฐจ์ ์œผ๋กœ ์ถœ๋ ฅ

const arr = ["seungineer", "์Šน์ง€๋‹ˆ์–ด"]
arr.map((val)=>{console.log(val)})
// seungineer
// ์Šน์ง€๋‹ˆ์–ด

๐Ÿ’ก .map((value)=>{ }) ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด ๊ฐ ์š”์†Œ๋ฅผ for๋ฌธ ์—†์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค!

filter ํ•จ์ˆ˜ ์ด์šฉ ๋ฐฉ๋ฒ•

map ํ•จ์ˆ˜์™€ ๋™์ผํ•˜์ง€๋งŒ return ๋’ค์— ์กฐ๊ฑด์‹์ด true์ธ ์š”์†Œ๋งŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

// ์ˆซ์ž๊ฐ€ ์ €์žฅ๋œ ๋ฐฐ์—ด์—์„œ ํ™€์ˆ˜๋งŒ ์ถ”์ถœํ•˜๋Š” ์˜ˆ
const numArr = [1, 2, 3, 4, 5];

const oddArr = numArr.filter((num) => {
    return num % 2 === 1;
});

console.log(oddArr) // [1, 3, 5]

(์ฐธ๊ณ ) map, filter ํ•จ์ˆ˜์—์„œ ๋‘ ๋ฒˆ์งธ ์ธ์ž์—๋Š” index ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค!

const arr = ["seoul", "busan", "daejeon"]
arr.map((city, idx)=> {
    console.log(`${city}๋Š” ${idx+1}๋ฒˆ ์งธ ๋„์‹œ์ด๋‹ค.`);
})
// seoul๋Š” 1๋ฒˆ ์งธ ๋„์‹œ์ด๋‹ค.
// busan๋Š” 2๋ฒˆ ์งธ ๋„์‹œ์ด๋‹ค.
// daejeon๋Š” 3๋ฒˆ ์งธ ๋„์‹œ์ด๋‹ค.

map์„ ์ด์šฉํ•œ ์˜ˆ์‹œ

  • ๋ˆ„์‹œ๋‹ค, ์‚ฌํ‚ค์˜ค์นด, ๊ณ ํ† ์˜ ์ด๋ฆ„์ด ์ €์žฅ๋œ ๋ฐฐ์—ด์ด ์žˆ๋‹ค. ๋ˆ„์‹œ๋‹ค ์ด์™ธ์˜ ์ด๋ฆ„  ๋’ค์—๋Š” '๋‹˜'์„ ๋ถ™์ธ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์ž.
const namelist = ["๋ˆ„์‹œ๋‹ค", "์‚ฌํ‚ค์˜ค์นด", "๊ณ ํ† "]

const newArr = namelist.map((name)=>{
    if (name === "๋ˆ„์‹œ๋‹ค"){
        return name
    } else{
        return `${name}๋‹˜`
    }
});
console.log(newArr) // [ '๋ˆ„์‹œ๋‹ค', '์‚ฌํ‚ค์˜ค์นด๋‹˜', '๊ณ ํ† ๋‹˜' ]