๋ชฉ๋ก๐จFrontEnd (40)
Input + Output = True

๐Javascript] 'use strict' โ ์๊ฒฉ๋ชจ๋ (use strict) 'use strict'๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์๊ฒฉ๋ชจ๋๋ฅผ ์คํํ๋ค ์๊ฒฉ๋ชจ๋๋ ์ ์ธํ์ง ์์ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ ๋ฑ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๊ฒฉํ ๊ธฐ์ค์ด ์ ์ฉ๋๋ ๊ฒ์ ๋งํ๋ค ์๊ฒฉ๋ชจ๋์ ์ฌ์ฉ ์ฌ๋ถ์ ๋ฐ๋ฅธ ์ฐจ์ด์ ์ ์ดํด๋ณด์ function test() { x = 5 } test() console.log(x) // 5 ์ ์ธ๋์ง ์์ ๋ณ์ x๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ์ถ๋ ฅ๋ ๊ฒ ๊ฐ์ง๋ง ์คํํด๋ณด๋ฉด ์ ์ ์๋ํ๋ค ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์๋ฌต์ ์ผ๋ก ์ ์ญ ๋ณ์๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ ์ ์๋ํ๊ฒ ๋๋ค๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋์ ์ฝ๋๋ true๊ฐ ๋๋ค function test() { x = 5 } test() console.log(x) // 5 cons..

๐Javascript] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ - ์ฝ ์คํ, ๋ฉ๋ชจ๋ฆฌ ํ ๋ฉ๋ชจ๋ฆฌ (RAM) - Random Access Memory ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํจํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ฉฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๊ฐ ๋น ๋ฅด์ง๋ง ์ปดํจํฐ ๋๋ ํด๋น ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ฉด ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ฌ๋ผ์ง๋ค โ ์ฝ ์คํ, ๋ฉ๋ชจ๋ฆฌ ํ์ด๋? 1. ์ฝ์คํ(Call Stack) ์์ํ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค(string, number, boolean, null, undefined, bigint, symbol) ์คํ์ปจํ ์คํธ(Execution Context)๋ฅผ ํตํด ์๋ ์์ ๋ค์ ์ ์ดํ๋ค ๋ณ์ ์๋ณ์(์ด๋ฆ) ์ ์ฅ ์ค์ฝํ ์ฒด์ธ ๋ฐ this ๊ด๋ฆฌ ์ฝ๋ ์คํ ์์ ๊ด๋ฆฌ ๋ฑ์ ์ํ 2. ๋ฉ๋ชจ๋ฆฌ ํ(Memory Heap) ์ฐธ์กฐํ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค..

๐ vue 3 - ์ด๋ฒคํธ ํธ๋ค๋ง composition API๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค โ ์ด๋ฒคํธ ํธ๋ค๋ง v-on ๋๋ ํฐ๋ธ๋ฅผ ํตํด ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋จ์ถํด์ @ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ค v-on:click="handler" ๋๋ ์ค์ฌ์ @click="handler"์ ๊ฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค ์ฌ์ฉ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค ์ธ๋ผ์ธ ํธ๋ค๋ฌ: ์ด๋ฒคํธ๊ฐ ํธ๋ฆฌ๊ฑฐ๋ ๋ ์คํ๋๋ ์ธ๋ผ์ธ JavaScript ๋ฉ์๋ ํธ๋ค๋ฌ: ์ปดํฌ๋ํธ์ ์ ์๋ ๋ฉ์๋ ์ซ์ ๊ฐ์: {{ count }} // ์ธ๋ผ์ธ 1 ์ถ๊ฐ // ๋ฉ์๋ 1 ์ถ๊ฐ const count = ref(0) const countIncrement = () => { count.value++ } โ ์ด๋ฒคํธ ๊ฐ์ฒด ์ ๊ทผ ํน์ ํค์๋ $event๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์๋์ ์ ๋ฌํ๊ฑฐ๋ ์ธ๋ผ์ธ ..

๐ vue 3 - v-for ๋ฐ๋ณต๋ฌธ composition API๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค โ v-for v-for์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๋ฆฌ์คํธ๋ก ๋ ๋๋งํ ์ ์๋ค v-for ์ฌ์ฉ ์์ ๊ฐ ์๋ฆฌ๋จผํธ๋ฅผ ์ถ์ ํด์ ์ฌ์ฌ์ฉ ๋ฐ ์ฌ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋๋ก ํ๊ธฐ ์ํด ๊ฐ ํญ๋ชฉ์ ๋ํ ๊ณ ์ key ์์ฑ์ด ์์ด์ผ ํ๋ค ์ฆ, ๋ฆฌ์คํธ์ ์์๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ๋ฐ์ดํฐ์ ์ถ๊ฐ, ์ญ์ ๋ฑ ์ฌ์ ๋ ฌ์ด ํ์ํ ๊ฒฝ์ฐ ํด๋น ์๋ฆฌ๋จผํธ์ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด ๊ณ ์ ํ key ๊ฐ์ด ํ์ํ๋ค // v-bind:key๋ :key๋ก ์ถ์ฝ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค {{ index }} - {{ item.message }} const items = ref([ { id: 1, message: 'itemA' }, { id: 2, message: 'itemB' } ]) ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค ..

๐ vue 3 - v-if, v-show composition API๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค โ v-if v-if, v-else-if, v-else๋ฅผ ํตํด ์กฐ๊ฑด๋ถ ๋ ๋๋ง์ด ๊ฐ๋ฅํ๋ฉฐ ๋๋ ํฐ๋ธ ๋ณ๋ก ํ์ ๋ธ๋ญ์ด๋ฉด์ ์ธ์ ํด์ผ ํ๋ค A B C A/B/C ๋ชจ๋ ์๋ const text = ref("D") // ์๋์ ๊ฐ์ด ๋ ๋๋ง๋๋ค A/B/C ๋ชจ๋ ์๋ โ v-show ์๋ฆฌ๋จผํธ๋ฅผ ์กฐ๊ฑด๋ถ๋ก ํ์ํ๋ ๋ค๋ฅธ ์ต์ ์ด๋ฉฐ ์ฌ์ฉ๋ฒ์ v-if์ ๋์ฒด๋ก ๋์ผํ๋ค v-show! const show = ref(false) // ์๋์ ๊ฐ์ด ๋๋๋ง๋๋ค v-show! v-show์ ์๋ฆฌ๋จผํธ๋ ํญ์ ๋ ๋๋ง ๋๋ฉด์ DOM์ ๋จ์ ์๊ณ display CSS ์์ฑ์ผ๋ก ์ ํํ๋ค โ v-if vs v-show v-if v-if๋ ์ค์ ์กฐ๊ฑด๋ถ ๋ ๋๋ง์ผ๋ก..

๐ vue 3 - class & style composition API๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค โ ํด๋์ค ๋ฐ์ธ๋ฉ ๊ฐ์ฒด ๋ฐ์ธ๋ฉ ์๋ ์ฝ๋ isActive์ Boolean๊ฐ์ ์ํด active ํด๋์ค๊ฐ ๊ฒฐ์ ๋๋ค const isActive = ref(true) // ๋ค์๊ณผ ๊ฐ์ด ๋๋๋ง ๋๋ค computed ์ผ๋ฐ์ ์ผ๋ก๋ ๊ฐ๋ ์ฑ ๋ฐ ์ฌ์ฌ์ฉ์ฑ์ ์ํด ๊ณ์ฐ๋ ๊ฐ์ ๋ฐํํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค classObject const isActive = ref(true) const error = ref(null) const classObject = computed(() => ({ active: isActive.value && !error.value, 'text-error': error.value })) component ์ปดํฌ๋ํธ์ c..

๐ vue 3 - computed (computed vs method) composition API๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค โ computed vue์ ํจ์ํ ์์ฑ์ผ๋ก, ์ด๋ ํ ๊ฐ์ ๊ณ์ฐํ์ฌ ๋ฆฌํดํ๋ ํจ์๋ก ์ฌ์ฉ๋๋ฉฐ ์ฐ๊ฒฐ๋ data๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ฐ์ ๋ค์ ๊ณ์ฐํ์ฌ ๋ฐ์ธ๋ฉํ๋ค ์ฆ, ์ต์ ๋ฒ์ ์ญํ ์ ํ๋ค ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ์ ์๋์ ๊ฐ๋ค sumC: {{ sumC }} const text = ref(1) const sumC = computed(()=>{ return text.value * 1 }) // sumC: 1 ๊ธฐ๋ณธ์ ์ผ๋ก getter๋ฅผ ์ ๊ณตํ๋ฉฐ, ํ์์ ๋ฐ๋ผ setter๋ฅผ ์ค์ ํด์ ์ฌ์ฉํ ์ ์๋ค getter์ setter๋ฅผ ํตํด ์ฝ๊ธฐ, ์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ๋ฉฐ setter๋ฅผ ์ ์ํ์ง ์๊ณ ๊ฐ์ ์ ๋ฐ์ดํธ ํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ์ถ๋ ฅ..

๐ vue 3 ๋ฐ์ํ - reactive and ref composition API๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค ๋ฐ์ํ vue์์๋ ๋ฐ์ดํฐ์ ์ค์๊ฐ ์ ๋ฐ์ดํธ๊ฐ ๊ฐ๋ฅํ ๊ฒ์ ๋ฐ์ํ์ด๋ผ๊ณ ํ๋ค โ reactive reactive() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ๋๋ ๋ฐฐ์ด์ ๋ฐ์ํ์ผ๋ก ๋ง๋ค ์ ์๋ค ๋ฐํ ๊ฐ์ ์๋ณธ ๊ฐ์ฒด์ ๊ฐ์ง ์๊ณ ์๋ณธ ๊ฐ์ฒด๋ฅผ ์ฌ์ ์ํ ๊ฐ์ฒด์ด๋ค const raw = {} const proxy = reactive(raw) // ๋ฐ์ํ์ผ๋ก ์ฌ์ ์ ๋ ๊ฒ์ ์๋ณธ๊ณผ ๊ฐ์ง ์๋ค console.log(proxy === raw) // false ๊ฐ์ฒด, ๋ฐฐ์ด ๋๋ Map์ด๋ Set๊ณผ ๊ฐ์ ์ปฌ๋ ์ ์ ํ์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค reactive ์์ ์ซ์๊ฐ ์ฆ๊ฐํ๋ฉฐ ํ๋ฉด์ ์ค์๊ฐ ๋ฐ์ธ๋ฉ์ ํ๋ ์์ ์ด๋ค reactive ์ฌ์ฉ ์ฌ๋ถ์ ๋ฐ..

๐ vue 3 ๊ธฐ๋ณธ ๋ฌธ๋ฒ composition API๋ฅผ ๊ธฐ์ค์ผ๋ก ํฉ๋๋ค โ ๋ฌธ๋ฒ ํ ์คํธ ๋ณด๊ฐ๋ฒ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๊ธฐ๋ณธ ํํ - ์ผ๋ฐ ํ ์คํธ๋ก ํด์ ๋ฉ์ธ์ง: {{ msg }} ๋๋ ํฐ๋ธ vue ๋๋ ํฐ๋ธ v- ์ ๋์ฌ๊ฐ ์๋ ์์ฑ์ ์๋ฏธํ๋ค v-html ๋๋ ํฐ๋ธ ์ค์ HTML ์ถ๋ ฅ ํ ์คํธ ๋ณด๊ฐ๋ฒ ์ฌ์ฉ: {{ rawHtml }} v-html ๋๋ ํฐ๋ธ ์ฌ์ฉ: ํ ์คํธ ๋ณด๊ฐ๋ฒ ์ฌ์ฉ: ์ด๊ฒ์ ๋นจ๊ฐ์์ด์ด์ผ ํฉ๋๋ค. v-html ๋๋ ํฐ๋ธ ์ฌ์ฉ: ์ด๊ฒ์ ๋นจ๊ฐ์์ด์ด์ผ ํฉ๋๋ค. ์์์ html ๋์์ผ๋ก ์ธํด ๋ณด์ ์ทจ์ฝ์ ์ด ์๊ธธ ์ ์์ผ๋ ์ฌ์ฉ์ ์กฐ์ ์ปจํ ์ธ ์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ๊ถ์ฅํ๋ค v-html์ ์ฌ์ฉ์ ์์ ํ๊ณ ๋ฐ๋์ ์ด์ ๊ฐ ์์ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ๋๋ก ํด์ผํ๋ค โ ์ ๋ ฅ ๋ฐ์ธ๋ฉ input event v-model ์ด์ : ํ์ฌ ..

๐Javascript] ์ค์ฝํ, ์ค์ฝํ์ฒด์ธ, ๋ ์์ปฌ ์ค์ฝํ โ ์ค์ฝํ Scope ์ค์ฝํ (Scope) - ๋ฒ์ Javascript์์ ์ค์ฝํ๋ ‘์๋ณ์(๋ณ์)์ ์ ๊ทผํ ์ ์๋ ์ ํจ๋ฒ์’๋ฅผ ๋ปํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ฝํ๋ 2๊ฐ์ง ํ์ ์ด ์๋ค. 1. Global (์ ์ญ) 2. Local (์ง์ญ) ์ ์ญ ์ค์ฝํ(Global Scope)๋ ์ ์ญ์ ์ ์ธ๋์ด ์์ด ์ด๋ ๊ณณ์์๋ ํด๋น ๋ณ์์ ์ ๊ทผํ ์ ์๊ณ ์ง์ญ ์ค์ฝํ(Local Scope)๋ ํด๋น ์ง์ญ์์๋ง ์ ๊ทผํ ์ ์๋ค. let a = "global" function aPrint() { let a = "local" console.log(`aPrint : ${a}`) } aPrint() //aPrint : local console.log(`global : ${a}..