๐Ÿ‘‰ arr.indexOf()

indexOf() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์—์„œ ์ง€์ •๋œ ์š”์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

let arr = ["welcome", "to", "My", "blog"];

console.log(arr.indexOf("to")); //  1
console.log(arr.indexOf("blog")); //  3
console.log(arr.indexOf("useong")); // -1

๊ฐ’์€ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฌธ์ž๊ฐ€ ์—†์œผ๋ฉด -1 ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค!



๐Ÿ‘‰ mutable(์ฐธ์กฐํƒ€์ž…)๊ณผ immutable(์›์‹œํƒ€์ž…)

  1. mutable
  • ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป
  • ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์ฃผ์†Œ๋ฅผ ์ฐพ์•„์„œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•จ

  • ๋Œ€ํ‘œ์ ์ธ ๋ฉ”์„œ๋“œ : pop(), push(), shift(), unshift(), splice(), reverse(), sort()

  • ๋ฌธ์ œ ์˜ˆ์‹œ :

push()๋ฅผ ์ด์šฉํ•ด์„œ ์ฃผ์†Œ๊ฐ’์ด ๋™์ผํ•œ ๋ฐฐ์—ด์— ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์š”์†Œ์— ์ธ์ž๊ฐ’์„ ๋„ฃ๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

let arr = ["welcome", "to", "My", "blog"];

//1๋ฒˆ์งธ ํ•จ์ˆ˜
function newArr1(arr, el) {
    return arr.push(el);
}

//2๋ฒˆ์งธ ํ•จ์ˆ˜
function newArr2(arr, el) {
    arr.push(el);

    return arr;

    console.log(newArr1, "useong"); // 5
    console.log(newArr2, "useong"); // ["welcome","to","My","blog","useong"]
}


์ด๋Ÿฌํ•œ ์ฐจ์ด๋ฅผ ๋ณด์ด๋Š” ์ด์œ ๋Š” mutable(์ฐธ์กฐํƒ€์ž…)์€ ์ง์ ‘ ๋ณ€๊ฒฝ์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. push ๋ฉ”์„œ๋“œ๋Š” ์ฃผ์–ด์ง„ ๊ฐ’์œผ๋กœ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์„ ์–ด๋””์—์„œ ์‹œ์ž‘ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด length ์†์„ฑ์— ์˜์กดํ•œ๋‹ค.

๊ทธ๋ ‡๊ธฐ๋•Œ๋ฌธ์—, 2๋ฒˆ์งธ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์ง์ ‘ ๋ณ€๊ฒฝ์„ ํ•ด์ฃผ๊ณ  ๋ฐ˜ํ™˜์„ ํ•˜๊ฒŒ ๋˜๋ฉด ์›ํ•˜๋Š” ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.


  1. immutable
  • ๋ถˆ๋ณ€, ๋ณ€ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป
  • ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์ฃผ์†Œ์™€ ๋‹ค๋ฅธ ์ƒˆ๋กœ์šด ์ฃผ์†Œ(์ƒˆ๋กœ์šด ๋ฐฐ์—ด)์— ๊ฐ’์ด ํ• ๋‹น

  • ๋Œ€ํ‘œ์ ์ธ ๋ฉ”์„œ๋“œ : slice(), concat(), join(), reduce(), map(), includes()

  • ๋ฌธ์ œ ์˜ˆ์‹œ :

slice()๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ์—ด๊ณผ ์ธ๋ฑ์Šค๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค ์ดํ›„์˜ ์š”์†Œ๋“ค์„ ๊ฐ–๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๊ฐ€์ ธ์˜ค์ž.

let arr = ["hello", "welcome", "to", "My", "blog"];

//1๋ฒˆ์งธ ํ•จ์ˆ˜
function newArr1(arr, n) {
    return arr.slice(n);
}

//2๋ฒˆ์งธ ํ•จ์ˆ˜
function newArr2(arr, n) {
    arr.slice(n);

    return arr;

    console.log(newArr1, 1); // ["welcome", "to", "My", "blog"]
    console.log(newArr2, 1); // ["hello", "welcome", "to", "My", "blog"]
}


์ด ๋‘˜์˜ ์ฐจ์ด๋Š” ๋ญ˜๊นŒ ?

์ฒซ๋ฒˆ์งธ ํ•จ์ˆ˜๋Š” slice๊ฐ€ immutable ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ ๋ฐฐ์—ด์€ ๋”ฐ๋กœ ์žˆ๊ณ , ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ๋‹ด์•„์„œ ๋ฆฌํ„ด์„ ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์›๋ณธ๋ฐฐ์—ด์€ ๋”ฐ๋กœ ์žˆ๊ณ , ์ฃผ์†Œ๊ฐ’๋„ ๋‹ค๋ฅธ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•œ ๊ฒƒ์ด๋‹ค. (์–•์€ ๋ณต์‚ฌ์˜ ๊ฐœ๋…)

๊ทธ๋ ‡๋‹ค๋ฉด, ๋‘๋ฒˆ์งธ๋Š” ๋ณ€ํ•จ์—†์ด ๊ทธ๋Œ€๋กœ ๋ฆฌํ„ด์ด ๋˜์—ˆ์„๊นŒ?

๋‘๋ฒˆ์งธ๋Š” ๊ทธ๋ƒฅ arr ์„ ๋ฐ˜ํ™˜ํ•œ ๊ฒƒ์ด๋‚˜ ๋‹ค๋ฆ„์ด ์—†๋‹ค. arr.slice(n) ์™€ arr ๋Š” ๋‹ค๋ฅธ ๋ฐฐ์—ด์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.



๐Ÿ‘‰ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋‹ค. ๋‚ด์ผ์€ ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณผ ์˜ˆ์ •์ธ๋ฐ, ์˜ค๋Š˜ ์•Œ๊ฒŒ ๋œ ์ง€์‹์ด ์žˆ์–ด์„œ ์ž ๊น ๋ธ”๋กœ๊น…์„ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐฐ์—ด(Array)์€ ๊ฐ์ฒด(Object)์˜ ์ผ์ข…์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

๋” ์‰ฝ๊ฒŒ ๋งํ•ด, ๋„˜๋ฒ„๋ง์ด๋˜์–ด ์ˆœ์ฐจ์ ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š” ๊ฐ์ฒด(Object)๋ฅผ ๋ฐฐ์—ด(Array)์ด๋ผ ํ•œ๋‹ค.

๊ฐ์ฒด์—๋Š” ๋ชจ๋“  ์†์„ฑ์„ ์ง€๋‹Œ ์›ํ˜• ๊ฐ์ฒด(Object.prototype) ๊ฐ€ ์žˆ๋Š”๋ฐ,

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ด ์›ํ˜• ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๊ฐ€์ ธ์™€์„œ(์ฐธ์กฐํ•˜์—ฌ) ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์†์„ฑ์„ ์ด๋ฆฌ์ €๋ฆฌ ๋ฐ”๊พผ ๋ฐฐ์—ด ์›ํ˜• ๊ฐ์ฒด(Array.prototype)๋ฅผ ๋”ฐ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋ฐฐ์—ด ์›ํ˜• ๊ฐ์ฒด๊ฐ€, ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ ์ด๋‹ค.

์ด๋Ÿฐ ๊ณผ์ •์„ ๋Œ์ด์ผœ๋ณด๋ฉด, ๊ฒฐ๊ตญ โ€œ๋ฐฐ์—ด์˜ ๋งŽ์€ ์†์„ฑ์€ ๊ฐ์ฒด์™€ ๋‹ค๋ฅผ๋ฐ”๊ฐ€ ์—†๊ณ , Object.prototype์„ ์ตœ์ข… ์ข…์ฐฉ์ง€๋กœ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์—, object, array, function์€ ์‚ฌ์‹ค ๊ฐ์ฒด ๋ผ๋Š” ๋ง์„ ํ•˜๊ณ ๋Š” ํ•œ๋‹ค.

๋‹ค๋งŒ, ์‹ค์งˆ์ ์œผ๋กœ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์€ ๋‹ค๋ฅธ ์ž๋ฃŒ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋”ฉ ์‹œ์— ์ด๋Ÿฐ ๋ฏธ๋ฌ˜ํ•œ ์ ๊นŒ์ง€ ๊ตฌ๋ถ„ํ•˜๊ณ  ์ฐพ์•„์„œ ํ•ด์•ผ ํ•˜๋Š” ์ผ์€ ๋งŽ์ง€ ์•Š๋‹ค.

์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ๋” ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ OOP๋„ ๋”ฐ๋กœ ๊ฒ€์ƒ‰ํ•ด๋ด์•ผ๊ฒ ๋‹ค!



๐Ÿ‘Š ๋‚ด์ผ์˜ TIW(today I Will)

๊ฐ์ฒด(Object), ์Šค์ฝ”ํ”„(Scope), ํด๋กœ์ €(Closure)