TIL - 21.06.29 ๐Ÿ‘จโ€๐Ÿ’ป - JS

5097 ๋‹จ์–ด JavaScriptjsTILJavaScript

TIL - 21.06.29 ๐Ÿ‘จโ€๐Ÿ’ป

๊ฐ์ฒด


Object.keys()

Object.keys(obj) ๋ฉ”์†Œ๋“œ๋Š” ์ธ์ž ์ž๋ฆฌ์— ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์„œ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ์š”์†Œ๋กœ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

const obj = {
  name: 'sunghoon',
  job: 'dev',
  age: '26',
}

console.log(Object.keys(obj)) // [name, job, age]

๋ฐฐ์—ด๊ณผ in ์—ฐ์‚ฐ์ž

in ์—ฐ์‚ฐ์ž๋Š” ์ด์ „์—๋„ ํฌ์ŠคํŒ… ํ–ˆ๋“ฏ, key in obj์˜ ๋ฌธ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ•ด๋‹น ์—ฐ์‚ฐ์ž๋Š” in ๋’ค์— ์˜ค๋Š” ๊ฐ์ฒด์— in ์•ž์— ์˜ค๋Š” ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž์ด๋‹ค.

const obj = {
  name: 'sunghoon',
  job: 'dev',
  age: '26',
}

console.log('name' in obj) // true; ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๊ฐ€ ๊ฐ์ฒด ์•ˆ์— ์กด์žฌ ํ•˜๋Š”์ง€ ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ด in ์—ฐ์‚ฐ์ž๋ฅผ ๋ฐฐ์—ด์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ ๋ฐฐ์—ด ์•ˆ์— ์žˆ๋Š” ์š”์†Œ๋ฅผ in ์—ฐ์‚ฐ์ž๋กœ ์ฐพ์•„๋„ false๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
์™œ๋ƒ, ๋ฐฐ์—ด์—์„œ์˜ in ์—ฐ์‚ฐ์ž๋Š” ์š”์†Œ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹Œ index๋ฅผ key ์ž๋ฆฌ์— ๋ฐ›์œผ๋ฉฐ ํ•ด๋‹น index์— ๊ฐ’์ด ํ• ๋‹น๋˜์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

const arr = [1, 2, 3, ,5,] // index 3์€ ๋นˆ ์š”์†Œ์ด๋‹ค.

console.log(2 in arr) // true;
console.log(3 in arr) // false;  
// arr ์˜ 3๋ฒˆ ์ธ๋ฑ์Šค๊ฐ€ ๋น„์–ด์žˆ๊ธฐ์— 2๋ฒˆ ์ธ๋ฑ์Šค์— 3์ด ์žˆ๋“  ๋ง๋“  false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฝ”ํ”Œ๋ฆฟ ํ’€๋•Œ๋Š” ๋™๋™๊ฑฐ๋ฆฌ๋ฉด์„œ ๋ญ๊ฐ€ ๋ฌธ์  ์ง€, ์™œ ์กฐ๊ฑด๋ฌธ ์•ˆ์œผ๋กœ ๊ธฐ์–ด ๋“ค์–ด๊ฐ€๋Š”์ง€ ์ดํ•ด๋ฅผ ๋ชปํ–ˆ์ง€๋งŒ ์ง€๊ธˆ ์™€์„œ ์ƒ๊ฐํ•˜๋ฉด ๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ์˜€๋‹ค.

์• ์ดˆ์— ์ด in ์—ฐ์‚ฐ์ž๋Š” ๊ฐ์ฒด์—์„œ๋„ ํ”„๋กœํผํ‹ฐ ๊ฐ’(property value)์œผ๋กœ ํ”„๋กœํผํ‹ฐ ์กด์žฌ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ํ”„๋กœํผํ‹ฐ ํ‚ค(property key)๋กœ ์กด์žฌ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ ๋‹น์—ฐํžˆ ์œ ์‚ฌ ๊ฐ์ฒด์ธ ๋ฐฐ์—ด์—์„œ ์‚ฌ์šฉํ• ๋•, ๊ฐ์ฒด์—์„œ์˜ ํ‚ค ์—ญํ• ์„ ํ•˜๋Š” index๋ฅผ ๊ฐ€์ง€๊ณ  ์กด์žฌ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ฝ”ํ”Œ๋ฆฟ ๋„์ค‘์— ์š”์†Œ๋ฅผ ์•ž์— ๋„ฃ๊ณ ์„  ์™œ ์—ฐ์‚ฐ์ž๊ฐ€ ์ด์ƒํ•˜๋‹ˆ ๋งˆ๋‹ˆ ํ•˜๋˜๊ฒŒ ๊ฐ์ฒด์—์„œ in ์—ฐ์‚ฐ์ž ์•ž์— ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๋„ฃ๊ณ  ์—ฐ์‚ฐ์ž๊ฐ€ ์ด์ƒํ•˜๋‹ค๊ณ  ํˆฌ์ •๋ถ€๋ฆฌ๋˜ ๊ผด ์ด์—ˆ๋˜ ๊ฒƒ์ด๋‹ค.


GOOD ๐Ÿ˜‰

์˜ค๋Š˜ ์ฝ”ํ”Œ๋ฆฟ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ ๋Œ€๋ถ€๋ถ„ ๋ง‰ํžˆ๋Š” ๊ฒƒ ์—†์ด ์ˆ ์ˆ  ํ’€์—ˆ๋‹ค.
์ฝ”ํ”Œ๋ฆฟ์—์„œ ์ƒ๊ฒผ๋˜ ๋ช‡๊ฐ€์ง€ ์˜๋ฌธ์ด ๋‚˜์ค‘์— ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํ’€๋ ธ๋‹ค.
์˜ค๋Š˜ ์ฝ”ํ”Œ๋ฆฟ ๋ฌธ์ œํ’€๋ฉด์„œ ํฌ๋กฌ ๊ฐœ๋ฐœ์ž๋„๊ตฌ๋ฅผ ์ด์šฉํ•ด ์˜ค๋ฅ˜๋ฅผ ์ฐพ๋Š” ๊ฒƒ์— ์กฐ๊ธˆ ๋” ์ต์ˆ™ํ•ด์กŒ๋‹ค.

BAD ๐Ÿ˜ฅ

๋ฌธ์ œ ํ’€์–ด๋ณด๊ณ  ํ•œ๋‹ค๊ณ  ์ •์ž‘ ๋‚ด๊ฐ€ ๋”ฐ๋กœ ๊ณต๋ถ€ํ•  ๋ถ„๋Ÿ‰์€ ๊ณต๋ถ€๋ฅผ ๋ชปํ–ˆ๋‹ค.
๋Šฆ์ž ์ž์„œ ์•„์นจ ๊ณต๋ถ€๋„ ๋งŽ์ด ๋ชปํ–ˆ๋‹ค.

TO DO ๐Ÿ”ฅ

  • ๊ฐ์ฒด ๊ณต๋ถ€
  • ๋ฐฐ์—ด thisArgu
  • Node.js
  • React ์ž…๋ฌธ

Retrospect ๐Ÿง

์ฃผ๋ง์— ์‹ค์ปท ๋†€๊ณ  ์ƒํ™œํŒจํ„ด์ด ์™„์ „ํžˆ ๊นจ์ ธ ๋ฒ„๋ ค์„œ ์•„์นจ ์‹œ๊ฐ„์„ ์ž๊พธ ๋‚ ๋ฆฌ๊ณ  ์žˆ๋‹ค.
๊ทธ๋ž˜๋„ ์˜ค๋Š˜์€ ์–ด์ œ๋ณด๋‹ค ํ•œ์‹œ๊ฐ„ ๋นจ๋ฆฌ ์ผ์–ด๋‚ฌ์œผ๋‹ˆ ๋‚ด์ผ ์•„์นจ์— ์˜ค๋Š˜๋ณด๋‹ค ํ•œ์‹œ๊ฐ„ ๋นจ๋ฆฌ ์ผ์–ด๋‚˜๋ฉด ์›๋ณต์ด๋‹ค!

์œ„์— ์ ์€ ์กฐ๊ฑด๋ฌธ์— in ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ–ˆ๋˜ ๋ฌธ์ œ๋Š” ๊ฒฐ๊ตญ .includes ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค.
๋‹น์—ฐํžˆ ๋ฐฐ์—ด์—์„  .includes ๋ฉ”์†Œ๋“œ๊ฐ€ ๋จผ์ € ๊ธฐ์–ต๋‚ฌ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ์จ ๋ณธ์ ์ด ์—†์œผ๋‹ˆ ๋ฐ”๋กœ ๋ฐ”๋กœ ์ƒ๊ฐ์ด ๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

์—ญ์‹œ ์‹ค์ œ๋กœ ์จ๋ณด๋Š”๊ฒŒ ๋ฐฐ์šฐ๋Š”๋ฐ ํ›จ์”ฌ ๋„์›€์ด ๋˜๋Š” ๋“ฏ ํ•˜๋‹ค.

์˜ค๋Š˜ ๋ชปํ–ˆ๋˜ ๋ฐฐ์—ด์˜ thisArgu๋Š” ๋‚ด์ผ ์•„์นจ์— ์šด๋™ ํ›„๋”ฑ ๊ฐ”๋‹ค์™€์„œ ๋ฐ•์‚ด๋‚ด๊ฒ ๋‹ค.

Reference ๐Ÿ™‡

๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ - https://ko.javascript.info/

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